React Redux Set Item Закончено
У меня такое чувство, что я так близок к этому... У меня есть список дел, который я создаю.
Пользователь может нажать на кнопку с надписью "завершить", чтобы пометить этот конкретный элемент как завершенный.
Я думаю об этом, когда пользователь нажимает эту кнопку, чтобы обновить только "завершенное" состояние до истинного.
По какой-то причине текст в состоянии изменился на "неопределенный" из выбранного элемента, а другой элемент добавляется в состояние при нажатии "завершить"
Вот мое действие:
export function completeTodo() {
return {
type: "COMPLETE_TODO",
completed: true
}
}
Вот мой редуктор:
case "COMPLETE_TODO": {
return Object.assign({}, state, {
todos: [{
text: action.text,
completed: action.completed,
id: getId(state)
}, ...state.todos]
});
}
2 ответа
Следующий код создает новый массив с одним новым объектом todo и всеми предыдущими задачами (поэтому в основном вы добавляете одну задачу в начало массива из предыдущего состояния):
[
{
text: action.text,
completed: action.completed,
id: getId(state)
},
...state
]
Вы должны отфильтровать старый объект todo:
[
{
text: action.text,
completed: action.completed,
id: getId(state)
},
...state.todos.filter(todo => todo.id !== getId(state))
]
Ваше действие COMPLETE_TODO не имеет текстового поля, поэтому редуктор назначает неопределенное состояние.
Насколько я понимаю, вы не хотите изменять текстовое свойство элементов после завершения. Вы можете удалить текстовое назначение из редуктора.