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

Vue3:watch与watchEffect的异同

Vue3 watch与watchEffect的异同

  • 相同点
  • 不同点
  • 监听store的数据变化:watch
  • 监听store的数据变化:watchEffect

相同点

  • 数据响应式:
    都能够监听响应式数据的变化。当数据发生变化时,他们都会自动出发相应的回到函数。
  • 自动追踪依赖:
    都能够自动追踪回调函数中使用的响应式数据,并在这些数据发生变化时触发回调函数。这样可以确保回调函数与数据保持同步。
  • 异步执行:
    都会在下一个微任务队列中异步执行回调函数。可以避免在同一事件循环中触发大量的回调函数,提高性能。

不同点

————watchwatchEffect
执行时机‘懒执行’,即不会立刻执行,只在监听的数据发生改变时触发;若想要立刻执行,需要配置参数immediate:true。会立刻执行一次;然后回调函数里的依赖数据发生变化时,会再执行。
参数不同至少两个参数(1.侦听的数据,2.回调函数;3.配置参数(deep,immediate等))。只有一个参数(回调函数)。
结果不同可以同时获得oldvalue和newvalue。获取不到oldvalue,只能拿到newvalue。
适用场景需要对oldvalue和newvalue进行比较;需要精准追踪某个值时;待后续补充待后续补充
其他待后续补充回调逻辑复杂时,会影响性能

监听store的数据变化:watch

import { watch } from 'vue';
import { storeToRefs } from 'pinia';  setup() {const counter = useCounter(); // 使用你的counter storeconst state = storeToRefs(counter); // 将counter的state转换为ref对象// 监听state.count的变化watch(state.count, (newValue, oldValue) => {// 执行相应的操作console.log(`count变为${newValue}`);});return {state,};
}

优点: 使用storeToRefs函数可以将store中的state转换为ref对象,使得在组件中使用watch函数更加方便。这种方法适用于需要在组件中对store中的state进行细粒度的监听,并执行相应的操作。
缺点: 需要手动将state转换为ref对象,稍微繁琐一些。如果只是简单地监听state的变化,可能会显得过于复杂。

监听store的数据变化:watchEffect

import { watchEffect } from 'vue';setup() {const counter = useCounter(); // 使用你的counter store// 监听counter.count的变化watchEffect(() => {// 执行相应的操作console.log(`count变为${counter.count}`);});
}
http://www.dtcms.com/a/585034.html

相关文章:

  • 做网站代理wordpress文章半透明
  • (论文速读)LyT-Net:基于YUV变压器的轻量级微光图像增强网络
  • 操作系统?进程!!!
  • Diffusion 到 Flow Matching ( 从 DDPM 到 Stable Diffusion ) 丝滑入门
  • 无监督学习与互信息
  • 数据集预处理:规范化和标准化
  • vue学习之组件与标签
  • 软件测试之bug分析定位技巧
  • Rust 练习册 :Pig Latin与语言游戏
  • Tomcat的基本使用作用
  • 完整网站建设教程网站建设需要会什么软件
  • 【ASP.Net MVC 】使用Moq让单元测试变得更简单
  • Linux:线程的概念与控制
  • 零基础学AI大模型之嵌入模型性能优化
  • 【二叉搜索树】:程序的“决策树”,排序数据的基石
  • Canvas/SVG 冷门用法:实现动态背景与简易数据可视化
  • 昆明做网站做的好的公司智能建站系统 网站建设的首选
  • kali安装npm/sourcemap
  • 协作机器人的关节是通过什么工艺加工的
  • 轻松开启数字化时代,一键部署实现CRM落地
  • 长春市网站推广网站开发技术人员
  • JavaScript 指南
  • C++ LeetCode 力扣刷题 541. 反转字符串 II
  • C++死锁深度解析:从成因到预防与避免
  • 达梦DMDSC知识
  • 【C++】基于C++的RPC分布式网络通信框架(二)
  • Python 实现:从数学模型到完整控制台版《2048》游戏
  • 第1课-通过DIFY实现一个完整的Text2Sql来讲AI原生及Agentic RAG长什么样
  • 站长平台wordpress调用分类产品
  • 2.3 Transformer 变体与扩展:BERT、GPT 与多模态模型