Javascript 不在Vuex存储区中更改模块状态。Vuex | Vue
我正在探索vuex模块的功能,我不知道我做错了什么 我有一个带有一个模块的简单vuex存储 该模块包含一个state和mutation选项,其中仅在模块状态中添加一个新项 当我试图调用变异函数时,它不起作用Javascript 不在Vuex存储区中更改模块状态。Vuex | Vue,javascript,vue.js,vue-component,vuex,vuex-modules,Javascript,Vue.js,Vue Component,Vuex,Vuex Modules,我正在探索vuex模块的功能,我不知道我做错了什么 我有一个带有一个模块的简单vuex存储 该模块包含一个state和mutation选项,其中仅在模块状态中添加一个新项 当我试图调用变异函数时,它不起作用 Codesandbox=>您必须从操作中调用 const addTheme = ({ commit }, { description }) => { commit(SET_NEW_ITEM, { description }); ... } 在变异中,您必须创建一个与SE
Codesandbox=>您必须从操作中调用
const addTheme = ({ commit }, { description }) => {
commit(SET_NEW_ITEM, {
description
});
...
}
在变异中,您必须创建一个与SET\u NEW\u ITEM同名的函数:
const SET_NEW_ITEM = (state, description) => {
}
您的操作已将上下文和有效负载参数合并为一个参数,而不是将它们分开:
addItem({commit},有效负载){✅ // 对的
addItem({commit,payload}){❌ // 不正确
另一个问题是模块的状态
是一个数组而不是一个对象,并且被直接使用,就像它是一个状态项一样。将状态
设为一个对象,并将项数据放入数组属性中:
状态:{
项目:[
{id:“1”,name:“1”},
{id:“2”,name:“2”},
{id:“3”,name:“3”}
]
}
将您的计算机更改为使用此项
属性:
const ItemsState=computed(()=>store.state.a.items);
在变异中,按下新值(之前的值根本不会更改状态
,因为它只会更改函数参数引用):
设置新项目(状态、有效负载){
状态.items.push(有效载荷);
}
您不需要操作来调用此:
函数addItem(){
让newItem={id:“5”,name:“5”};
store.commit('a/SET\u NEW\u ITEM',newItem)
}
这是您的我知道我可以使用操作。通常,当您有一些异步操作或需要在操作函数中提交多个突变时,操作函数需要。在本例中,我没有任何异步操作,也不需要使用操作函数提交一些突变函数。Tha非常感谢您的回复@x-rw,但没有操作功能也有可能。请注意-问题应包含所有相关代码,而不是依赖外部链接来解释问题。