一、什么是watchEffect?

watchEffect 是 Vue3 组合式 API 提供的一个响应式侦听器,专门用来监听响应式数据的变化,并执行相应的副作用逻辑。它的核心定义很干脆:立即执行一次副作用函数,自动追踪函数内部访问到的所有响应式数据,当这些依赖发生变化时,重新执行该函数——整个过程不需要手动指定监听源。

简单来说,它就是 watch 的“简化版”,专注于“副作用响应”这件事,把 watch 需要手动指定依赖的繁琐操作省掉了。用起来更直接,也更省心。

二、工作原理

它的底层基于 Vue3 响应式系统的 ReactiveEffect 实现,流程非常清晰:

三、核心特性

(注意:原文此处“自动停止:在”后内容不完整,但为依据原文保留原样。)

四、实战用法示例

4.1 基础用法(修改页面标题)

4.2 自动清理副作用

4.3 手动停止侦听

五、与watch的核心区别

对比维度watchEffectwatch
依赖收集自动收集函数内依赖需手动指定监听源
触发时机默认立即执行默认惰性执行(需immediate开启)
旧值获取不支持支持(newVal, oldVal)
适用场景动态依赖、简单副作用旧值对比、节流防抖、异步请求

六、常见避坑点

七、核心总结

watchEffect 的核心价值就是“简化响应式侦听”——不需要手动指定依赖,特别适合动态依赖和简单副作用的场景,比如 DOM 操作、页面标题修改、临时调试等。记住三个关键点:

它和 watch 是互补关系:简单副作用用 watchEffect,需要旧值对比、异步节流时用 watch。两相结合,才能高效驾驭 Vue3 的响应式侦听机制。

本文转载于:https://www.jb51.net/javascript/355949hke.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。