当前位置: 首页 > article >正文

Vue3的watch函数中,第三个参数配置对象详细分析

在Vue 3的watch函数中,第三个参数是一个配置对象,用于定义如何执行watch函数。下面是几个常用的配置项的讲解,并附上代码示例:

1、immediate

        immediate:当设置为true时,会在初始渲染时立即执行watch函数。默认为false

// 示例代码
watch(
  'count',
  (newCount, oldCount) => {
    console.log(`new count: ${newCount}, old count: ${oldCount}`)
  },
  {
    immediate: true
  }
)

2、deep

        deep:当设置为true时,会深度遍历监听对象的所有属性。默认为false

// 示例代码
const state = reactive({
  obj: { a: 1, b: 2 },
  arr: [1, 2, 3]
})
watch(
  () => state.obj,
  (newObj, oldObj) => {
    console.log(`new obj: ${JSON.stringify(newObj)}, old obj: ${JSON.stringify(oldObj)}`)
  },
  {
    deep: true
  }
)

3、flush

        在Vue3中,watch函数的第三个参数是可选的配置项,其中一个配置项是flush,它控制何时运行watch的回调函数。flush有三个选项:"pre""post""sync"。        

3.1、pre

        在侦听器的回调函数运行之前立即运行更新函数,即在dom渲染完毕前调用回调函数(此时获取不到DOM!)。这是默认值。

watch(
  () => count.value,
  () => {
    console.log("watcher callback");
  },
  { flush: "pre" }
);
3.2、post

        在侦听器的回调函数运行之后立即运行更新函数,即在下一次DOM更新之后执行。

watch(
  () => count.value,
  () => {
    console.log("watcher callback");
  },
  { flush: "post" }
);
3.3、sync

        在更改被触发时立即运行侦听器的回调函数和更新函数,这是非常明确和强制的选项。

watch(
  () => count.value,
  () => {
    console.log("watcher callback");
  },
  { flush: "sync" }
);

在大多数情况下,不需要指定flush选项,因为默认的行为通常足够了。但是,对于一些需要更精确控制的场景,flush可以是一个非常有用的配置项。

4、onTrackonTrigger

        用于跟踪和调试响应式对象属性的访问和修改。onTrackonTrigger可以帮助我们更好地理解和追踪响应式数据的读取和修改操作,更好地进行调试和开发。

4.1、onTrack

        onTrack选项会在我们读取响应式数据时被触发,我们可以在该函数中做一些记录或者打印日志的操作。例如:

const state = reactive({
  count: 0,
})

watch(
  () => state.count,
  (count, prevCount) => {
    console.log(`count changed from ${prevCount} to ${count}`)
  },
  {
    onTrack: (event) => {
      console.log(`The ${event.key} key is being read`)
    },
  }
)

        在这个例子中,我们在watch函数的第三个参数中配置了onTrack选项,然后在控制台输出了响应式数据读取的相关信息。

4.2、onTrigger

        onTrigger选项会在响应式数据被修改时被触发,我们可以在该函数中做一些特殊的处理。例如:

const state = reactive({
  count: 0,
})

watch(
  () => state.count,
  (count, prevCount) => {
    console.log(`count changed from ${prevCount} to ${count}`)
  },
  {
    onTrigger: (event) => {
      console.log(`The ${event.key} key is being set to ${event.value}`)
    },
  }
)

在这个例子中,我们在watch函数的第三个参数中配置了onTrigger选项,然后在控制台输出了响应式数据修改的相关信息。

        

5、总结

        这些是`watch`函数的第三个参数的一些常见配置选项。您可以根据需要选择适当的配置来满足您的需求。


http://www.kler.cn/news/161060.html

相关文章:

  • uniapp横向滚动示例
  • JavaSE语法之五:数组的定义与使用(超详解!!!)
  • Android12之MediaCodec硬编解码调试手段(四十九)
  • python基于ModBusTCP服务端的业务实现特定的client
  • 反钓鱼防盗号,共筑校园安全防线!Coremail出席CERNET学术年会
  • 案例054:基于微信的追星小程序
  • 代码随想录算法训练营第四十二天 _ 动态规划_01背包问题、416.分割等和子集。
  • 医院有HIS系统,为什么还要开发预约挂号小程序?数据如何互通?
  • 前端笔记(三)CSS 盒子模型
  • ★538. 把二叉搜索树转换为累加树
  • PHP使用HTTP代码示例模板
  • gpt3、gpt2与gpt1区别
  • 深入理解 Java 虚拟机(JVM)从入门到精通
  • 使用GPT-4V解决Pycharm设置问题
  • 西工大计算机学院计算机系统基础实验一(函数编写11~14)
  • Java程序员,你掌握了多线程吗?
  • 【运维面试100问】(七)ceph基础题面试
  • 「神印王座」萝莉女神小六打劫,白送10万功勋点,王原原恋人登场
  • 掌汇云 | 全场景数据追踪,多维了解用户偏好,提高运营效率
  • python入门级简易教程
  • C语言二叉树的基本概念(一)
  • 猫头虎分享ubuntu20.04下VSCode无法输入中文解决方法
  • ProEasy机器人案例:电池边包胶
  • IoT DC3 是一个基于 Spring Cloud 全开源物联网平台 linux docker部署傻瓜化步骤
  • 图解系列--HTTPS,认证
  • Linux AMH服务器管理面板本地安装与远程访问
  • C++ Primer Plus第十五章笔记
  • 第4节:Vue3 布尔属性
  • H5: 按钮的点击热区
  • 解析操作系统是如何启动起来的?