关于 Vuex 中的 ({commit}) 写法做个记录

582 阅读1分钟

因为平时做的都是个人的小项目,很少接触 Vuex ,最近又接触到了就遇到个小问题了。

在Vuex 的教程中有这么一段描述,如下图

image.png

在 store 上注册 action,处理函数总是接受 context 作为第一个参数,payload 作为第二个参数(可选)。

context 对象包含以下属性

{
  state,      // 等同于 `store.state`,若在模块中则为局部状态
  rootState,  // 等同于 `store.state`,只存在于模块中
  commit,     // 等同于 `store.commit`
  dispatch,   // 等同于 `store.dispatch`
  getters,    // 等同于 `store.getters`
  rootGetters // 等同于 `store.getters`,只存在于模块中
}

总结

所以 ({commit}) 就是从 context 中解构出 commit ,然后可以直接使用

其他理解

actions: {
  increment (context) {
    context.commit('increment')
  }
}

等同于↓

actions:{
  increment ({ commit: context.commit }) {
    context.commit('increment');
  }
}

等同于↓

actions: {
  increment ({ commit }) {
    commit('increment')
  }
}

其他参考1 其他参考2