Vuex- Action的 { commit }的寫法

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"
相關文章
相關標籤/搜索