Vue 3 中 watch 和 watchEffect 的清理副作用到底该怎么写才不翻车?
在 Vue 3 的组合式 API 里,watch 和 watchEffect 的清理函数经常被忽略。比如你在监听一个搜索关键词时发起异步请求,当关键词快速变化,前一次请求可能后返回并覆盖最新结果;或者在 watchEffect 里绑定 resize、scroll 等 DOM 事件,组件卸载后没有解绑,造成内存泄漏。这些问题在开发环境不一定报错,但在真实项目中会偶发数据错乱和性能下降。Vue 3 为 watch 和 watchEffect 提供了 onCleanup 回调,用来注册清理逻辑。清理的触发时机包括:监听源再次变化、watcher 停止(组件卸载或手动 stop)。理解这个机制,可以避...