Vue / vuex
Здравствуйте, у меня такое состояние:
state: {
tasks: [{
title: 'Title task one',
desc: 'Lorem ipsum dolor sit amet consectetur...',
completed: false,
id: 31232131312,
},
...
],
...
}
мутации:
addNewTask: (state, task) => state.tasks.push(task),
В компоненте я передаю такой объект
newTask: {
title: "",
desc: "",
completed: false,
id: Number
}
следующий
store.commit("addNewTask", this.newTask);
Все работает, но когда я добавляю еще одну задачу, обе задачи выглядят точно так же
Пример:
{ title: 'task 1 ', desc: 'desc 1', completed: false, id: 11111}
следующий
{ title: 'task 2 ', desc: 'desc 2', completed: false, id: 22222}
и обе задачи выглядят так:
{ title: 'task 2 ', desc: 'desc 2', completed: false, id: 22222}
Кто-нибудь может мне объяснить, как?
Привет
Обновлено:
репо:





Итак, как правило, изменять элементы непосредственно в состояниях Vuex - плохая идея. Ты можешь попробовать
addNewTask: (state, task) => state.tasks = state.tasks.concat([task])
Это не изменит массив, но изменит его значение, поэтому Vuex может отслеживать его изменения.
Обновлено:
Думаю, я разобрался в проблеме. Проблема в том, что вы каждый раз используете один и тот же объект newTask для создания новой задачи.
Просто измените команду на
store.commit("addNewTask", Object.assign({}, this.newTask));
Это создаст копию объекта newTask, который устранит эту проблему.
К сожалению, все то же самое, но спасибо за попытку помочь