如何使用Vuex商店进行编辑功能?

时间:2019-03-06 03:36:20

标签: vue.js vuex nuxt.js

我应该怎么做才能在Vue + Vuex商店中具有编辑功能?这是我的代码:

<ul>
  <li v-for="todo in todos" :key="todo.task">
    <span v-bind:class="{todo: todo.completed}">{{todo.id}} - {{todo.task}}</span>
    <button @click="editTodo(todo)">Edit</button>
    <button @click="toggleTodo(todo)">Complete</button>
    <button @click="removeTodo(todo)">Delete</button>
  </li>
</ul>
{
  mutations: {
    editTodo(state, todo) {
      state.todos = state.todos.map(originalTodo =>
        originalTodo.id === todo.id ? todo.task : originalTodo
      );
    }
  },

  actions: {
    async editTodo({ commit }, task) {
      const res = await axios.patch(`http://localhost:4444/todos/${todo.id}`, {
        task
      });

      commit("editTodo", res.data);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以使用state.todos.splice(state.todos.findIndex(original => todo.id === original.id), 1, todo)代替.map()