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"