工作时候接触到了VueX对象式的commit提交方式,顺便研究了一下
正常来说我们使用Vuex提交的时候是这样的:
this.$store.commit('num', 10)
今天发现了可以这样提交:
this.$store.commit({ type:'num',name:'numTool', data: 10 })
这样做的好处是可以只写一个 mutations 去根据传入的值判断给哪个 state 赋值,比如:
num (state, param) {
state[param.name] = param.data
}
属性 type 就是 mutations 里定义的函数名称,其他的随便写只要自己清楚即可
完整的便于理解的如下:
//提交
this.$store.commit({ type: 'num', name: 'numTool', data: 10 })
//更改状态
const mutations = {
num(state, param) {
state[param.name] = param.data
}
}
//状态管理
const state = () => ({
numTool: {},
})