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组件更新之前被调用的。

相关推荐
摸鱼的春哥7 分钟前
春哥的Agent通关秘籍13:实现RAG查询
前端·javascript·后端
明月_清风13 分钟前
滚动锁定:用户向上翻看历史时,如何阻止 AI 新消息把它“顶”下去?
前端·javascript
明月_清风15 分钟前
当高阶函数遇到 AI:如何自动化生成业务层面的逻辑拦截器
前端·javascript·函数式编程
moshuying10 小时前
别让AI焦虑,偷走你本该有的底气
前端·人工智能
GIS之路11 小时前
ArcPy,一个基于 Python 的 GIS 开发库简介
前端
可夫小子13 小时前
OpenClaw基础-为什么会有两个端口
前端
喝拿铁写前端13 小时前
Dify 构建 FE 工作流:前端团队可复用 AI 工作流实战
前端·人工智能
喝咖啡的女孩14 小时前
React 合成事件系统
前端
从文处安14 小时前
「九九八十一难」组合式函数到底有什么用?
前端·vue.js
前端Hardy14 小时前
面试官:JS数组的常用方法有哪些?这篇总结让你面试稳了!
javascript·面试