Mutations
更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation旅赢。Vuex 中的 mutation 非常類似于事件:每個(gè) mutation 都有一個(gè)字符串的?事件類型 (type)?和 一個(gè)?回調(diào)函數(shù) (handler)。這個(gè)回調(diào)函數(shù)就是我們實(shí)際進(jìn)行狀態(tài)更改的地方絮短,并且它會(huì)接受 state 作為第一個(gè)參數(shù):
你不能直接調(diào)用一個(gè) mutation handler溪掀。這個(gè)選項(xiàng)更像是事件注冊(cè):“當(dāng)觸發(fā)一個(gè)類型為?increment?的 mutation 時(shí)胜茧,調(diào)用此函數(shù)。”要喚醒一個(gè) mutation handler亏推,你需要以相應(yīng)的 type 調(diào)用?store.commit?方法:
提交載荷(Payload)
你可以向?store.commit?傳入額外的參數(shù)学赛,即 mutation 的?載荷(payload):
在模板里修改按鈕的 store.commit( ) 方法 傳遞的參數(shù),我們傳遞10吞杭,意思就是每次加10盏浇。
在大多數(shù)情況下,載荷應(yīng)該是一個(gè)對(duì)象芽狗,這樣可以包含多個(gè)字段并且記錄的 mutation 會(huì)更易讀:
對(duì)象風(fēng)格的提交方式
提交 mutation 的另一種方式是直接使用包含?type?屬性的對(duì)象:
當(dāng)使用對(duì)象風(fēng)格的提交方式缠捌,整個(gè)對(duì)象都作為載荷傳給 mutation 函數(shù),因此 handler 保持不變.
在組件中提交 Mutation( mapMutations?輔助函數(shù) )
可以在組件中使用?this.$store.commit('xxx')?提交 mutation译蒂,或者使用?mapMutations?輔助函數(shù)將組件中的 methods 映射為?store.commit?調(diào)用(需要在根節(jié)點(diǎn)注入?store)曼月。