侦听器
功能
每次响应式属性变化时,触发一个函数
特性
- watch默认浅层的,深层需要增加deep: true
深层监听开销很大,需要遍历树
- 即时回调的侦听(创建时回调一次)
用对象来声明 - handler方法中会被调用
- 设置immediate: true 属性
watch: {
handler() {
//创建时会被调用
}
//强制立即执行回调
immediate: true
}
初次回调发生在created钩子之前,此时处理了data、computed和methods。
-
回调触发时机
若改变引起Vue组件更新,侦听器中回调的是更新前的状态。
如果想访问更新后的DOM,需要指明属性:
flush: 'post'
-
停止
通常会在宿主组件卸载时,自动停止,多数情况下无需关心
在组件卸载前停止,需要调用停止函数,创建时声明停止函数
const unwatch = watch()
unwatch()