当前位置: 首页 > 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.jsqmd.com/news/101688/

相关文章:

  • LobeChat表单插件开发入门:为AI添加结构化输入
  • Podcast Bulk Downloader:播客批量下载终极指南
  • LobeChat睡眠改善建议生成模型训练
  • LobeChat快手内容推送策略
  • VictoriaMetrics 尝鲜
  • 【小迪安全2023】day23 PHP应用后台模块SessionCookietoken身份验证唯一性
  • 纪念币预约自动化工具使用指南:告别手动抢购的烦恼
  • 播客批量下载终极指南:Podcast Bulk Downloader全面解析
  • 基于STM32的智能水质检测鱼缸监测系统设计与实现
  • .NET进阶——深入理解线程(1)同步异步与单线程多线程的区分
  • 【文献分享】RAMEN:剖析脐带血中 DNA 甲基化组差异的个体、累加及交互基因-环境因素作用
  • Podcast Bulk Downloader:让你的播客收藏管理更高效
  • 基于STM32的水质检测系统设计与实现
  • 节能商业照明:核心优势、关键要素及光学性能分析
  • 【科研绘图系列】R语言绘制多种类型图形(heatmap boxplot linechart)
  • 双十一手机选购指南:剖析几款旗舰机型的影像技术突破
  • 幽冥大陆(五十二)V10酒店门锁SDK TypeScript——东方仙盟筑基期
  • LobeChat日志追踪与调试技巧:快速定位异常请求
  • LobeChat代码注释自动生成实践
  • DAY38模型可视化与推理
  • Radm1n1ster Adv.Math thinking class chapter6
  • Radm1n1ster CN
  • LobeChat能否实现AI占星师?星座运势与人格特质关联分析
  • Copilot的Plan模式到底好在哪?
  • 歌词写作伙伴:LobeChat帮你押韵和分段
  • 深入探索 WebHID:Web 标准下的硬件交互实现
  • 瑞数6补环境案例(3)——吐环境脚本
  • 读捍卫隐私08智能出行
  • 如何终极解决Windows依赖管理难题?完整系统依赖修复方案
  • 合同条款审查:LobeChat标记潜在风险点