Как я могу настроить функциональность редактирования с помощью Vuex Store?

#vue.js #vuex #nuxt.js

#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:

Вы можете использовать state.todos.splice(state.todos.findIndex(original => todo.id === original.id), 1, todo) вместо .map()