vue mutations方法如何动态修改对象内参数?
通过updateSetting()方法修改这个setting里面的任意参数,有没有什么办法让这个方法动态传参,直接用state.setting.传过来的名称,并赋值this.$store.commit('updateSetting',params);,而不用写多个方法给setting里其它参数赋值,
state:{ setting:{
tag: {
top: 0,
left: 0,
tagId: ''
},
params: '',
params1: ''
}
}
updateSetting(state,params){ //类似下面这种形式
state.setting.params=params.value
}
回答:
可以通过 Object.keys()
来获取所有的属性名然后遍历赋值,或者使用 ...
的展开符。
比如说
// store.jsimport Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
setting:{
tag: {
top: 0,
left: 0,
tagId: ''
},
params: '',
params1: ''
}
},
mutations: {
updateSetting(state,params){
const keys = Object.keys(params)
keys.forEach(key=> state.setting[key] = params[key])
},
// 或者
updateSetting2(state,params){
state.state = { ...state, ...params }
}
}
})
只不过这里我没有去做 state.tag.top
这样的赋值,其实你也可以通过使用 lodash
的 merge
方发来做合并处理。
以上是 vue mutations方法如何动态修改对象内参数? 的全部内容, 来源链接: utcz.com/p/933335.html