Vue 知识点:监视属性 - watch
- 当被监视的属性变化时,回调函数自动调用,进行相关操作 (以下指的是watch里的 handler)
- 监视属性必须存在,才能进行监视
- 监视的两种写法:
(1)new Vue的时候传入watch配置
(2)通过vm.$watch监视 - 监视属性的简写前提是watch配置项里只有handler,不需要immediate,deep的配置
<div id="root">
<h2>今天天气很{{info}}</h2>
<button @click="changeWeather">切换天气</button>
</div>
<script>
const vm = new Vue({
el:"#root",
data:{
isHot:true
},
computed:{
info() {
return this.isHot ? ‘炎热’ : ‘凉爽’
}
},
methods:{
changeWeather() {
this.isHot = !this.isHot
}
},
watch: {
**
isHot: {
immediate:true
handler(newValue,oldValue) {
console.log('isHot被修改了',newValue, oldValue)
}
},
**
isHot(newValue,oldValue){
console.log('isHot被修改了',newValue, oldValue)
}
}
})
**
vm.$watch('isHot'
immediate:true
handler(newValue,oldValue) {
console.log('isHot被修改了',newValue, oldValue)
}
})
**
vm.$watch('isHot'
console.log('isHot被修改了',newValue, oldValue)
})
结论:
两种方法的区别:
方法一是创建vue实例时明确知道自己需要监视的对象
方法二是创建vue实例时不知道自己监视的对象,后续会根据用户的行为明确自己需要监视的对象的时候