vuex教程中,有這樣一句話和這樣一段代碼:vue
實踐中,咱們會常常用到 ES2015 的
參數解構來簡化代碼(特別是咱們須要調用
commit
不少次的時候):
actions: { increment ({ commit }) { commit('increment') } }
其中,{commit} 寫法是解構後獲得的,下面就簡短解釋一下簡化的過程:git
知識點:es6
Action 函數接受一個與 store 實例具備相同方法和屬性的 context 對象
所以這個context參數能夠理解爲store
即這個context參數能夠使用commit提交mutation
因此,context也一樣包含如下屬性github
{ state, // 等同於 `store.state`,若在模塊中則爲局部狀態 rootState, // 等同於 `store.state`,只存在於模塊中 commit, // 等同於 `store.commit` dispatch, // 等同於 `store.dispatch` getters, // 等同於 `store.getters` rootGetters // 等同於 `store.getters`,只存在於模塊中 }
原寫法:vuex
actions: { increment (context) { context.commit('increment') } }
至關於:函數
actions:{ increment ({ commit: context.commit }) { context.commit('increment'); } }
至關於:spa
actions: { increment ({ commit }) { commit('increment') } }
借鑑ES2015中對象的解構code
var { foo, bar } = { foo: "lorem", bar: "ipsum" }; console.log(foo);// "lorem" console.log(bar);// "ipsum"