色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue watch deep 數(shù)組

黃文隆1年前7瀏覽0評論

當你在Vue中使用watch屬性去監(jiān)聽一個對象時,Vue會默認按照引用來檢測對象的變化。所以,如果你有個對象的引用發(fā)生了變化,那么會觸發(fā)watch的響應,但是如果對象的屬性發(fā)生了變化,watch并不會觸發(fā)響應。但是有一些情況我們需要監(jiān)聽對象內(nèi)部的屬性變化,這時候可以使用Vue的深度觀察。

那么,當我們在Vue中觀察一個數(shù)組時,應該怎么做才能深度觀察呢?

首先,我們需要了解一個關(guān)于Vue的特點,Vue無法檢測到以下變動的數(shù)組:

1.當你利用索引直接設置一個項時,例如:vm.items[indexOfItem] = newValue
2.當你修改數(shù)組的長度時,例如:vm.items.length = newLength

因此,Vue提供了一組變異方法,這些方法會改變原始數(shù)組,但同時也會觸發(fā)視圖更新,如下所示:

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

所以,如果你想深度觀察一個數(shù)組,可以通過以下方式實現(xiàn):

watch: {
arr: {
handler: function(val, oldVal) {
console.log('數(shù)組發(fā)生了變化');
},
deep: true // 深度觀察
}
}

在上述例子中,arr是一個數(shù)組,通過設置deep:true來實現(xiàn)深度觀察。

此外,還可以通過Vue.set方法來添加、修改或刪除數(shù)組元素,該方法可以確保響應式更新。例如:

let arr = [1,2,3];
Vue.set(arr, 4, 4); // 添加元素
Vue.set(arr, 0, 0); // 修改元素
Vue.delete(arr, 0); // 刪除元素

最后,需要注意的是,雖然深度觀察可以實現(xiàn)對數(shù)組內(nèi)部屬性的監(jiān)聽,但是會帶來一定的性能問題,因此不要濫用。