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"
相关文章
相关标签/搜索