Vue侦听器

Vue侦听器是根据组件状态做DOM更新或者异步更新其他级联状态的。计算属性的主要目标是根据已有数据计算出组件的状态,它是组件内部的计算,计算结果在组件内部应用。侦听器的主要目标是根据组件状态的变动,做级联的或者异步的操作或DOM更新,操作的影响范围比计算属性大得多。

javascript 复制代码
<script setup lang="ts">
import {reactive, ref, watch} from "vue"

   const obj=reactive({name:"obj",count:0});
   
   // count is formal parameter, it's change will not saved to obj.count
   watch(()=>obj.count,(count)=>{
      count=count+3;
      console.log("watch by obj.count by getter :"+count);
   });

   // obj is real parameter , it's change will be saved to obj
   watch(obj,(oldValue,newValue)=>{
       console.log("watch by obj by deep way :"+newValue.count);
   });

   watch(name,(oldName,newName)=>{
        console.log("oldName is "+oldName+", newName is "+newName);
   });

</script>

<template>
      <div>
            <button type="button" @click="obj.count++">测试侦听器</button>
      </div>
</template>

<style>

</style>

侦听器的标准格式如下:

javascript 复制代码
const data=ref({});

watch(data,(oldValue,newValue)=>{
      console.log(oldValue);
      console.log(newValue);
   },{
      immediate:true,  //default value is false, true value means watch callback function will be called immediately
      deep:true,    //default value is false, true value means watch is a deep watch
      flush:"post"   //default value is "pre", "post" means watch callback function can fetch data after Vue DOM updated completely
   });

侦听器默认情况下是懒执行、浅层侦听、在Vue组件更新之前被调用的。

相关推荐
糕冷小美n3 小时前
elementuivue2表格不覆盖整个表格添加固定属性
前端·javascript·elementui
小哥不太逍遥3 小时前
Technical Report 2024
java·服务器·前端
沐墨染3 小时前
黑词分析与可疑对话挖掘组件的设计与实现
前端·elementui·数据挖掘·数据分析·vue·visual studio code
anOnion3 小时前
构建无障碍组件之Disclosure Pattern
前端·html·交互设计
threerocks3 小时前
前端将死,Agent 永生
前端·人工智能·ai编程
问道飞鱼4 小时前
【前端知识】Vite用法从入门到实战
前端·vite·项目构建
爱上妖精的尾巴4 小时前
8-10 WPS JSA 正则表达式:贪婪匹配
服务器·前端·javascript·正则表达式·wps·jsa
Zhencode4 小时前
Vue3响应式原理之ref篇
vue.js
shadow fish5 小时前
react学习记录(三)
javascript·学习·react.js
小疙瘩5 小时前
element-ui 中 el-upload 多文件一次性上传的实现
javascript·vue.js·ui