vuex的store對象的state是響應式,凡是預先在state中定義的狀態,都會被加入到響應式系統中,當狀態發生了變化,所有引用狀態的vue文件的template都會隨之發生變化,做到響應式的功能。剛才也說了,提前定義好的會被加入到響應式系統中,那后面追加的屬性或對象能不能加入到響應式系統中呢?答案是 如果按照指定的方式來添加和刪除屬性,是可以做到響應式的。
比如現在我要添加一個新屬性height,用兩種方式添加,如下:
方式1:此種方式能添加state中對象的屬性,但無法加入到響應式系統中,即頁面上不會顯示出來,實際上確實存在了這個屬性
mutations: { addheight(state){ state.stus[0]['height'] = 168 } }
方式2:此方式可以讓屬性加入到響應式系統中
mutations: { addheight(state){ Vue.set(state.stus[1],'height',178) //參數一為對象,參數二為key,參數為value } }
說完添加屬性,再說下刪除吧,想要刪除屬性並加入響應式系統,如下方式:
mutations: { delheight(state){ Vue.delete(state.stus[1],'height') //參數一為對象,參數二是key } }
來個總圖: