Vue 3 的 effectScope 到底解决什么问题?从组件外响应式副作用说起
在 Vue 3 项目里,我们经常会把响应式逻辑抽成组合式函数,比如 useMouse、useScroll、useRequest。这些函数内部往往会有 watch、computed、watchEffect 这类响应式副作用。如果它们是在组件 setup 里调用的,Vue 会自动把这些副作用绑定到当前组件实例上,组件卸载时一起清理。但一旦你在组件外部调用,比如在全局状态模块、路由守卫、自定义指令、或者一个普通工具函数里创建了 watch,它就不会自动停止。时间一长,这些副作用会持续触发,造成内存泄漏和意料之外的重复请求。effectScope 就是为了处理这种“一组副作用需要统一停止”的场景而出现...