Vue 3 响应式数据怎么使用 watchEffect 自动收集依赖

云枫大大_3345

云枫大大_3345

2026-10-20

636人浏览

原创

watcheffect自动追踪执行时读取的响应式数据,无需依赖数组;条件分支、浅层响应式、异步读取影响依赖收集;支持flush控制执行时机;需用oninvalidate清理异步副作用;返回stop()函数用于手动停止监听。

vue 3 响应式数据怎么使用 watcheffect 自动收集依赖

直接在回调函数里读取响应式数据,Vue 就会自动盯住它们——不需要写依赖数组,也不用声明监听谁。

自动收集依赖的关键规则

watchEffect 不靠你列清单,而是靠“执行时读了什么”来判断该监听谁:

  • 函数里实际访问了 count.value 和 user.profile.city,就只追踪这两个;没读到的字段,哪怕在同一对象里,也不会响应变化
  • 条件分支会影响依赖:比如 if (show) { state.msg },只有 show 为真时,state.msg 才被纳入依赖
  • 对 reactive 对象是浅层追踪:修改 user.profile.age 能触发,但直接替换整个 user 对象才真正更新依赖链
  • 异步代码里读取的值不会被追踪:例如 await fetch(); console.log(data.value) 中的 data.value 不在初始 track 阶段,后续变化不会触发重跑

立即执行与副作用控制

它默认一创建就运行,适合初始化同步逻辑,但要注意执行时机:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习