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

相关推荐
jonssonyan2 分钟前
我自建服务器部署了 Next.js 全栈项目
前端
A了LONE5 分钟前
h5的底部导航栏模板
java·前端·javascript
专注VB编程开发20年7 分钟前
各版本操作系统对.NET支持情况(250707更新)
开发语言·前端·ide·vscode·.net
Zsnoin能18 分钟前
AI + TailwindCSS快速搭建一个属于自己的TailwindCSS学习网站
前端·css
五号厂房18 分钟前
聊一聊Javascript 中 hasOwnProperty和in操作之间的区别
前端
轻语呢喃19 分钟前
JavaScript :事件循环机制的深度解析
javascript·后端
摆烂为不摆烂23 分钟前
😁深入JS(六): 一文让你完全理解浏览器进程与线程
前端·javascript
qiyue7723 分钟前
Cursor 深度使用指南(二) - 新能力使用教程
前端·ai编程·cursor
伟笑1 小时前
React 的常用钩子函数在Vue中是如何设计体现出来的。
前端·react.js
Sapphire~1 小时前
重学前端003 --- CSS 颜色
前端·css