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

vue3中watch和watchEffect的区别

watchwatchEffect都是 Vue 3 的侦听 API,但定位不同:watch更“精确监听某个源”,watchEffect更“自动收集依赖做副作用”。

核心区别

  • 监听对象
    • watch:你要“明确写出”监听源(ref/getter/数组等)。
    • watchEffect:不写监听源,回调里“用到什么响应式数据就监听什么”(自动依赖收集)。
  • 是否立即执行
    • watch:默认不立即执行,需{ immediate: true }才会先执行一次。
    • watchEffect:默认立即执行一次。
  • 是否能拿到新旧值
    • watch:回调参数是(newVal, oldVal),便于做差异逻辑。
    • watchEffect:没有显式(new, old)(本质是“重新跑一遍副作用”)。
  • 适用场景
    • watch:适合“某个值变化后做事”,尤其需要 new/old、需要精确控制触发条件时。
    • watchEffect:适合“依赖很多/不确定依赖哪些”的副作用同步(例如根据多个响应式值更新外部状态)。
  • 停止与清理
    • 两者都返回stop()可停止。
    • 两者都支持清理副作用:watch的第 3 个参数onInvalidatewatchEffect的参数onCleanup(用法类似,解决请求竞态/取消订阅)。

简单示例对比

watch:明确监听keyword

watch( () => keyword.value, (newK, oldK) => { // 需要 new/old 做对比 }, { immediate: true } )

watchEffect:自动收集依赖

watchEffect((onCleanup) => { // 这里读了 keyword、page,就会自动监听它们 // 适合把多个依赖驱动的副作用写在一起 })

怎么选

  • 要“明确监听谁”、要 new/old、要避免误触发 → 用watch
  • 依赖多且会变、想省去列依赖、做副作用同步 → 用watchEffect
http://www.gsyq.cn/news/112486.html

相关文章:

  • LobeChat睡眠改善建议生成模型训练
  • 【小迪安全2023】day23 PHP应用后台模块SessionCookietoken身份验证唯一性
  • 【文献分享】RAMEN:剖析脐带血中 DNA 甲基化组差异的个体、累加及交互基因-环境因素作用
  • Podcast Bulk Downloader:让你的播客收藏管理更高效
  • 节能商业照明:核心优势、关键要素及光学性能分析
  • 双十一手机选购指南:剖析几款旗舰机型的影像技术突破
  • LobeChat日志追踪与调试技巧:快速定位异常请求
  • DAY38模型可视化与推理
  • LobeChat代码注释自动生成实践
  • Radm1n1ster Adv.Math thinking class chapter6
  • Copilot的Plan模式到底好在哪?
  • 深入探索 WebHID:Web 标准下的硬件交互实现
  • 合同条款审查:LobeChat标记潜在风险点
  • 脱口秀段子生成:LobeChat玩转中文谐音梗
  • WordPress跨平台兼容OA系统word上传需求
  • LobeChat待办事项提取与提醒功能实现
  • 真正厉害的销售,都摸透了人性!
  • FEMM软件下载与安装
  • NPP 热带森林:墨西哥查梅拉,1982-1995 年,R1
  • Xbox 360手柄在macOS上的终极适配指南:360Controller驱动完美解决方案
  • WordPress导入MathType公式保留矢量格式
  • AI 工具实战测评:从技术性能到场景落地的全方位解析
  • 【Hadoop+Spark+python毕设】网络安全入侵数据可视化分析系统、计算机毕业设计、包括数据爬取、数据分析、数据可视化、实战教学
  • Python 列表(List)详解
  • 巴菲特的投资时间管理
  • A.每日一题——3562. 折扣价交易股票的最大利润
  • 13、Linux文件系统挂载与检查全攻略
  • Git 分支管理
  • TradingView图表库深度解析:实时数据流与K线生成实战指南
  • 14、Linux 系统中光盘刻录与文件系统创建指南