Vue 3 中 watch 和 watchEffect 的依赖收集差异导致的一次诡异重复请求
在 Vue 3 的组合式 API 里,watch 和 watchEffect 看起来只是写法上的偏好区别,但它们对响应式依赖的收集时机完全不同。watch 是显式声明依赖源,只在源变化时执行回调;watchEffect 则是立即执行一次,执行过程中访问到的响应式数据会被自动收集为依赖。这个差异在简单场景下无感,但当你把异步请求放在 watchEffect 里,并且请求参数依赖多个响应式变量时,就可能出现重复请求。我最近在一个后台管理页面里就遇到了:切换筛选条件时接口被连续调用了三次,network 面板里三个请求参数还不一样。排查后发现是 watchEffect 内部的异步逻辑隐式读取了额外响...