Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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:如何正确地调用操作?_Javascript_Vue.js_Vuex - Fatal编程技术网

Javascript Vuex:如何正确地调用操作?

Javascript Vuex:如何正确地调用操作?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我无法理解如何使用Vuex通过有效负载传递操作。我知道我需要一个变异来改变状态,最好的做法是使用一个动作来调度变异。但我不确定如何调用该操作并传入参数。每当我尝试此操作时,都会出现以下错误: “未捕获的TypeError:无法读取未定义的属性'isComplete'” //Store.js 常数突变={ completeTodo:函数(状态,todo){ console.log(todo) todo.isComplete=todo.isComplete | | false state.togg

我无法理解如何使用Vuex通过有效负载传递操作。我知道我需要一个变异来改变状态,最好的做法是使用一个动作来调度变异。但我不确定如何调用该操作并传入参数。每当我尝试此操作时,都会出现以下错误:

“未捕获的TypeError:无法读取未定义的属性'isComplete'”

//Store.js
常数突变={
completeTodo:函数(状态,todo){
console.log(todo)
todo.isComplete=todo.isComplete | | false
state.toggleAll=false
}
}
常量动作={
completeTodo:({commit})=>commit('completeTodo')
}
//Todo.vue
方法:{
…映射操作([
“completeTodo”
])
}

您的操作应该采用第二个参数,即您在组件中传递的有效负载

const actions = {
  completeTodo: ({commit}, todo) => commit('completeTodo', todo)
}

更多细节

像这样想

Component=>了解todo和completeTodo函数(这是vuex mapActions提供的操作)。为了完成工作,它不必了解商店或任何功能

mapActions=>生成一个“智能”completeTodo函数,该函数负责存储中要调用的特定函数以及正确调用该函数的参数顺序