Vue 3 中 watch 与 watchEffect 的依赖收集差异:为什么你的回调没有触发?
在 Vue 3 的日常开发里,watch 和 watchEffect 看起来都能监听响应式数据变化并执行副作用,但很多人在实际项目中会遇到一种情况:明明修改了某个响应式变量,watchEffect 里的回调却纹丝不动,或者 watch 只监听了一个 getter 却意外地触发了多次。这类问题往往源于对两者依赖收集机制的理解偏差——watchEffect 是自动追踪同步执行期间访问到的所有响应式属性,而 watch 只监听显式指定的数据源,并且默认是惰性的。理解它们何时收集依赖、何时触发回调、以及 flush 时机如何影响执行顺序,能帮你在表单联动、路由参数同步、组件间状态派生等场景里写出更可预...