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.js

import 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 这样的赋值,其实你也可以通过使用 lodashmerge 方发来做合并处理。

以上是 vue mutations方法如何动态修改对象内参数? 的全部内容, 来源链接: utcz.com/p/933335.html

回到顶部