在 vue 2 中監(jiān)聽數(shù)組的變化,有兩種方法:使用 vue.set() 方法,用于設(shè)置數(shù)組中某個索引的值。使用 array.prototype 中的變異方法,如 push()、pop() 等。但要注意,數(shù)組中的對象是通過引用傳遞的,修改對象屬性不會觸發(fā)更新。
Vue 2 中監(jiān)聽數(shù)組
在 Vue 2 中,監(jiān)聽數(shù)組的變化可以通過 Vue.set() 方法和 Array.prototype 中的變異方法來實現(xiàn)。
Vue.set() 方法
Vue.set() 方法用于設(shè)置數(shù)組中的某個索引的值。當(dāng)使用該方法時,Vue 會自動檢測到數(shù)組的變化并觸發(fā)相應(yīng)的更新。例如:
const app = new Vue({ data() { return { array: [1, 2, 3] } } }); app.array[0] = 4; // 直接修改數(shù)組不會觸發(fā)更新 Vue.set(app.array, 0, 4); // 使用 Vue.set() 可以觸發(fā)更新
登錄后復(fù)制
Array.prototype 中的變異方法
Array.prototype 中的變異方法也會觸發(fā) Vue 的響應(yīng)式更新,包括:
push()
pop()
shift()
unshift()
splice()
reverse()
sort()
例如:
const app = new Vue({ data() { return { array: [1, 2, 3] } } }); app.array.push(4); // 觸發(fā)更新
登錄后復(fù)制
需要注意的是,數(shù)組中的對象是通過引用而不是值傳遞的。因此,修改數(shù)組中的對象的屬性不會觸發(fā)更新。要監(jiān)聽對象的更改,必須使用 Vuex 或其他狀態(tài)管理庫。