vue 2.x 提供了以下方法監(jiān)聽數(shù)組變化:1. v-for 指令;2. vue.set() 方法;3. .push()、.pop() 和 .splice() 方法;4. $watch() 方法(需設(shè)置 deep 選項(xiàng)為 true 以啟用深度監(jiān)視)。
Vue 2.x 中監(jiān)聽數(shù)組變化的方法
Vue.js 中提供了幾種方法監(jiān)聽數(shù)組變化:
1. 使用 v-for 指令
v-for 指令會(huì)自動(dòng)跟蹤數(shù)組變化并更新 DOM。
登錄后復(fù)制
2. 使用 Vue.set() 方法
Vue.set() 方法可以設(shè)置數(shù)組中的特定索引,并觸發(fā)數(shù)組變化的通知。
Vue.set(this.items, 0, '新項(xiàng)目');
登錄后復(fù)制
3. 使用 .push()、.pop() 和 .splice() 方法
這些方法會(huì)修改數(shù)組,并自動(dòng)觸發(fā)數(shù)組變化的通知。
this.items.push('新項(xiàng)目'); this.items.pop(); this.items.splice(0, 1);
登錄后復(fù)制
4. 使用 $watch() 方法
$watch() 方法可以監(jiān)聽特定數(shù)據(jù)的變化,包括數(shù)組。
watch: { items: { handler(val, oldVal) { // 在數(shù)組變化時(shí)執(zhí)行函數(shù) }, deep: true, }, },
登錄后復(fù)制
注意:
如果需要監(jiān)聽數(shù)組中對(duì)象的更改,需要將 deep 選項(xiàng)設(shè)置為 true,以啟用深度監(jiān)視。
Vue.js 默認(rèn)會(huì)使用 Object.freeze() 來(lái)使數(shù)組不可變,如果需要修改數(shù)組,需要手動(dòng)解除凍結(jié)。