Vue 3 的 watch 与 watchEffect:何时用哪个,以及如何避免重复触发
在 Vue 3 的组合式 API 里,watch 和 watchEffect 是日常业务代码中出现频率很高的两个响应式副作用工具。很多人第一次接触时容易把它们当成同一种东西,结果在监听对象属性、异步请求、路由参数变化或者需要手动停止监听的场景里踩坑。最常见的困扰是:明明只改了一个字段,回调却执行了两次;或者 watch 一个 reactive 对象的某个属性,却没有触发;又或者 watchEffect 里引用了某个响应式变量,但清理函数没写,导致旧请求覆盖新请求。这篇文章围绕实际开发中遇到的几个具体问题展开,讲清楚两者的依赖收集机制、flush 时机、deep 与 immediate 的配合,...