Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不在Vuex存储区中更改模块状态。Vuex | Vue_Javascript_Vue.js_Vue Component_Vuex_Vuex Modules - Fatal编程技术网

Javascript 不在Vuex存储区中更改模块状态。Vuex | Vue

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

我正在探索vuex模块的功能,我不知道我做错了什么

我有一个带有一个模块的简单vuex存储

该模块包含一个state和mutation选项,其中仅在模块状态中添加一个新项

当我试图调用变异函数时,它不起作用


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,但没有操作功能也有可能。请注意-问题应包含所有相关代码,而不是依赖外部链接来解释问题。