Vue深度监听

1.监听一般写法

watch:{
	a(newVal,oldVal){
		console.log(newVal);
	}
}

2.当监听对象属性时

watch:{
	"obj.name"(newVal,oldVal){
		console.log(newVal);
	}
}

3.如果要监听整个对象

watch:{
	obj:{
		deep:true,//true为进行深度监听,false为不进行深度监听
		handler(newVal){
			console.log(newVal);
		}
	}
}

监听整个对象是一个很消耗性能的操作,当属性改变,整个对象都会监听。

handler函数中,可以发现handler(newVal,oldVal)中的newVal与oldVal是一样的;如果我们需要使用到未改变之前的值时,就要使用Vue的computed属性了

computed:{
	needWatObj(){
		return JSON.pares(JSON.stringify(this.obj));//深拷贝需要监听的对象数据
	}
},
watch(){
	needWatObj:{
		deep:true,
		handler(newVal,oldVal){
			console.log("已改变的值=>",newVal);
			console.log("改变前的值=>",oldVal);
		}
	}
}

posted @ 2022-10-21 14:34  坚强的小蚂蚁  阅读(202)  评论(0编辑  收藏  举报