vue中的watch監(jiān)聽主要分為以下幾種:
1.普通監(jiān)聽
watch: {
msg(val,oldVal) {
console.log(val,oldVal);
}
}
2.立即監(jiān)聽
在立即監(jiān)聽中會使用到immediate屬性。
需要注意:immediate屬性是需要搭配handler方法一起使用的津滞。
watch: {
msg: {
handler(val,oldVal) {
console.log(val,oldVal);
},
immediate:true
}
}
3.深度監(jiān)聽
深度監(jiān)聽常常會被用于監(jiān)聽一個對象的改變時惊完,使用deep屬性椎咧。普通的watch方法是無法監(jiān)聽到對象內部屬性的改變,只有data中的數(shù)據(jù)才能夠監(jiān)聽到變化驰坊。為了解決這個問題就需要對對象進行深度的監(jiān)聽谊迄。
注意:如果監(jiān)聽的數(shù)據(jù)是一個對象,那么immediate: true屬性就是失效拙寡。
watch: {
obj: {
handler(val,oldVal) {
console.log(val,oldVal);
},
deep:true
}
}
如果監(jiān)聽的數(shù)據(jù)不是一個對象授滓,就可以使用immediate屬性亲善。例如:
watch: {
"obj.age": {
handler(val,oldVal) {
console.log(val,oldVal);
},
deep:true,
immediate:true
}
}