欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue watch deep用法

錢艷冰1年前10瀏覽0評論

在Vue中,watch選項用于監(jiān)聽數(shù)據(jù)的變化,實現(xiàn)數(shù)據(jù)變化時自動執(zhí)行一些操作。默認(rèn)情況下,watch只會監(jiān)聽數(shù)據(jù)引用的變化,如果數(shù)據(jù)中的某個屬性值發(fā)生變化不會觸發(fā)watch的監(jiān)聽。解決這個問題的方法是使用deep選項,以監(jiān)聽對象或數(shù)組內(nèi)部屬性值的變化。

watch: {
obj: {
deep: true,
handler: function (val, oldVal) {
console.log('obj changed');
}
}
}

在上面的代碼中,我們定義了一個watch監(jiān)聽obj對象的變化,并設(shè)置deep為true。當(dāng)obj內(nèi)部屬性值發(fā)生變化時,會觸發(fā)watch的handler函數(shù)。

除了deep選項之外,還可以使用immediate選項來指定在組件初始化時立即執(zhí)行watch的handler函數(shù)。

watch: {
obj: {
deep: true,
immediate: true,
handler: function (val, oldVal) {
console.log('obj changed');
}
}
}

當(dāng)immediate設(shè)置為true時,watch選項在組件初始化時會立即執(zhí)行一次handler函數(shù)。

需要注意的是,deep選項會引起性能問題,因為它監(jiān)聽了對象或數(shù)組內(nèi)部屬性值的變化,所以需要避免同時監(jiān)聽多個深層次的對象或數(shù)組。

另外,如果要監(jiān)聽數(shù)組的變化,可以使用Vue提供的專用方法。例如,可以使用push方法監(jiān)聽數(shù)組的添加元素操作。

watch: {
arr: {
handler: function (val, oldVal) {
console.log('arr changed');
},
deep: true
}
},
methods: {
addElement: function () {
this.arr.push('new element');
}
}

在上面的代碼中,我們定義了一個watch監(jiān)聽arr數(shù)組的變化,并使用push方法添加元素。由于監(jiān)聽了數(shù)組的變化,當(dāng)使用push方法添加元素時會觸發(fā)watch的handler函數(shù)。

最后需要注意的是,deep選項只能監(jiān)聽對象內(nèi)部屬性的變化,不能監(jiān)聽非引用類型的數(shù)據(jù)類型(如boolean、string、number等)的變化。