watchEffect适合变量变更即触发联动计算,自动追踪依赖无需手动声明,支持多ref响应、竞态清理及computed预处理,但不提供新旧值对比。
watchEffect 适合做“只要变量一变,就重新执行逻辑”的联动计算,它自动追踪内部读取的响应式值,不用手动列依赖,写起来更轻量、语义更直接。
当你有多个独立的响应式变量(比如搜索关键词、分类、状态),又希望它们任意一个变动都触发一次计算或请求,watchEffect 是最自然的选择。它会在回调里自动识别你读取了哪些 ref,并在任一值更新时重新运行整个函数。
联动计算常伴随异步操作(如 fetch、setTimeout),新触发可能覆盖旧结果。watchEffect 提供 onInvalidate 回调,让你能主动中断前序未完成任务。
如果联动逻辑依赖组合条件(比如“只有关键词非空且分类有效才发起请求”),建议先把判断逻辑抽到 computed 中,再在 watchEffect 里读取它。
它只关心“现在该算什么”,不暴露 oldValue。如果你需要基于差异做不同处理(比如仅当页码变化才滚动到顶部),就得改用 watch 数组方式;但多数联动计算只需最新状态,watchEffect 更简洁可靠。