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 не имеет текстового поля, поэтому редуктор назначает неопределенное состояние.

Насколько я понимаю, вы не хотите изменять текстовое свойство элементов после завершения. Вы можете удалить текстовое назначение из редуктора.

Другие вопросы по тегам