时间:2021-11-26 11:55:53 | 栏目:vue | 点击:次
watch
注意
名字 你想监听哪个属性,就要和他起一样的名字
用来监听vue实例中的数据变化
可以随时修改状态的变化
当你监听的属性发生变化时,会自动调用对应的监听方法
用于异步处理,开销比较大的运算
watch:{ name(newvalue,oldvalue){ //计算属性可以接受两个参数,第一个参数是新的属性值,第二参数是老的属性值 // this.age // console.log('name属性发生变化了') console.log(newvalue,oldvalue) }
<script> export default { data() { return { obj: { name: "张三", age: 20, children: [ { name: "李四", age: 27 }, { name: "王五", age: 23 } ] } }; }, watch: { obj: { handler: function(newVal, oldVal) { console.log("newVal:", newVal); console.log("oldVal:", oldVal); }, deep: true, immediate: true }, "obj.name": function(newVal, oldVal) { console.log("newVal obj.name:", newVal); console.log("oldVal obj.name:", oldVal); } }, }; </script>
监听对象的时候,需要加deep:true,这样才能深入底层去实时监听,如果没有加的话,对象是监听不到变化的。
immediate属性:布尔值
immediate:true:首次加载就监听数据变化
immediate:false:只有发生改变才监听
deep:true;
是开启深层次的监听,即所有属性都加上监听器,如果其中一个发生改变了就执行handler函数。