我想知道是否有可能,仅将单个属性分配给vuex存储,而不是整个对象。 vuex docs中没有任何可能性。目前,我存储这样的对象:
store.dispatch('currentUser', {
memberData: 'fooBar'
});
有时候,我只想从数据库中获取一个值并将其推入存储。有办法吗?
我认为我的问题不清楚。
实际上,我需要在dispatch中访问memberData的子嵌套属性,以仅更改memberData的一个元素。老实说,响应是什么都没有关系。也可能是“ foo”。
答案 0 :(得分:2)
如果您查看dispatch的文档,则第二个参数payload
可以是任何类型。不一定是嵌套在属性中的对象样式的分发:
发送:
store.dispatch('currentUser', response[0]);
商店:
state: {
currentUser: undefined
},
mutations: {
setCurrentUser(state, currentUser) {
state.currentUser = currentUser;
}
},
actions: {
currentUser(context, payload) {
context.commit('setCurrentUser', payload);
}
}
突变:
setCurrentUser(state, currentUser) {
state.currentUser = currentUser;
}
这是一个example正在起作用。
更新:
如果目标是合并/更新更改,则可以在object literals中使用传播。 Vuex文档Mutations Follow Vue's Reactivity Rules中也提到了这一点。
发送:
store.dispatch('currentUser', { systemLanguage: response[0].systemLangId });
商店:
state: {
memberData: { systemLanguage: 'foo' }
},
mutations: {
updateCurrentUser(state, updates) {
state.memberData = { ...state.memberData, ...updates };
}
},
actions: {
currentUser(context, payload) {
context.commit('updateCurrentUser', payload);
}
}
这example在起作用。
希望有帮助!