【发布时间】:2018-12-26 11:07:25
【问题描述】:
我对 Vuex 非常陌生,并试图为 Vuex 状态分配一个值(state.map.status.isReady 代表这个)。
但是,我想让我的代码可重用,所以我创建了一个函数 changeMapStatus(state, key, value) 来实现这一点。
此函数将其收到的属性state.map.status.key 修改为value。
但是,当我从组件文件中使用this.$store.commit('changeMapStatus', 'isReady', true) 调用突变时,它只是删除了state.map.status.isReady,并且该属性变为undefined。
另一方面,如果我将功能更改为
changeMapStatus(state, value) {
state.map.status.isReady = value;
}
它以某种方式起作用。
你能帮我看错哪一点吗?
非常感谢!
store.js (Vuex)
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
map: {
status: {
isReady: false,
},
},
},
mutations: {
changeMapStatus(state, key, value) {
state.map.status[key] = value;
}
},
});
【问题讨论】:
-
你觉得我的回答有用吗?
-
@BoussadjraBrahim 是的,我愿意。但是,我仍然无法理解为什么会这样。
-
它只是该函数接受两个参数,因此为了处理你应该传递第二个参数作为包装所有你想要的对象
标签: javascript vue.js vuejs2 vuex