news 2026/3/5 4:45:44

vue3中watch和watchEffect的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 6:29:47

Auto-Coder新特性SubAgents 融合里面提到的两个概念:subagents 和 workflow国内能够访问吗?(唐突了,原来这是两个AI编程的核心概念)

SubAgents 融合/Code agent 成本控制大法 问题:Auto-Coder新特性SubAgents 融合里面提到的两个概念:subagents 和 workflow国内能够访问吗? 唐突了,原来这是两个技术概念: Sub-agents和Workflow作为AI编程的核心概念…

作者头像 李华
网站建设 2026/3/5 3:15:14

LobeChat能否实现AI占星师?星座运势与人格特质关联分析

LobeChat能否实现AI占星师?星座运势与人格特质关联分析 在深夜的都市里,有人打开手机,轻声问:“我明天适合做重要决定吗?” 不是在查天气,也不是翻黄历——而是在和一个名为“星辰导师艾莉娅”的AI对话。她…

作者头像 李华
网站建设 2026/3/5 2:53:59

CDN加速LobeChat静态资源加载速度实测

CDN加速LobeChat静态资源加载速度实测 在构建AI助手门户的今天,一个流畅、快速响应的前端界面往往决定了用户是否愿意留下来继续对话。LobeChat作为一款功能强大且设计优雅的开源聊天界面,支持接入GPT、Claude、通义千问等多种大模型,并提供…

作者头像 李华