在vue3中watch和watchEffect的区别
监听方式:
watch
需要明确指定监听的数据源(可以是 ref、reactive 对象的属性等)watchEffect
不需要指定数据源,会自动追踪函数内部使用的响应式数据
执行时机:
watch
默认是惰性执行的,只有当监听的数据源变化时才会执行watchEffect
在初始化时会立即执行一次,然后再追踪依赖变化
获取值的方式:
watch
可以同时获取变化前后的值watchEffect
只能获取变化后的值
使用场景:
watch
适合需要精确控制监听源、需要旧值、或需要延迟执行的场景watchEffect
适合简单的副作用场景,自动关联依赖,代码更简洁
总结,watch
是 "显式指定依赖" 的惰性监听,watchEffect
是 "自动收集依赖" 的立即执行监听。