Vuex:如何正确调用动作?

时间:2017-03-03 21:16:27

标签: javascript vue.js vuex

我无法理解如何使用Vuex传递有效负载的操作。我知道我需要一个突变来改变状态,并且最好的做法是使用一个动作来调度突变。我不知道如何调用操作并传入参数。每当我尝试这个时,我都会收到错误:

  

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

// Store.js
const mutations = {
  completeTodo: function (state, todo) {
    console.log(todo)
    todo.isComplete = todo.isComplete || false
    state.toggleAll = false
  }
}

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

//Todo.vue

 methods: {
  ...mapActions([
    'completeTodo'
  ])
}
 <input type="checkbox" name="isCompleted" " v-on:change="completeTodo(todo)" class="todoCheck" />

1 个答案:

答案 0 :(得分:1)

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

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

更多详情

想到这样。

组件=&gt;知道todo和completeTodo函数(这是vuex mapActions提供的动作)。它无需了解商店或任何功能即可完成工作。

mapActions =&gt;生成一个'智能'的completeTodo函数,它负责调用商店中的特定函数以及正确调用它的参数顺序。