- 当被监视的属性变化时,回调函数handler自动调用,进行相关操作
- 监视的属性必须存在,才能进行监视
- 监视的2种写法:
① new Vue时传入watch配置
② 通过vm.$watch监视
watch: {
isHot: {
immediate: true, // 初始化时让handler调用一下
// handler什么时候调用?当isHot发生改变时
handler(newValue,oldValue) {
console.log('isHot被修改了', newValue, oldValue)
}
}
}
深度监视
① Vue中的watch默认不监测对象内部值得改变(一层)
② 配置deep:true可以监测对象内部值改变(多层)
备注
① Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以
② 使用watch时根据数据的具体结构,决定是否采用深度监视
computed和watch之间的区别:
① computed能完成的功能,watch都可以完成
② watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作
2个重要的小原则:
① 所有被VUE管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象
② 所有不被VUE所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象