Чтобы исправить это, внутри completeHandler()
сначала создайте новый массив, используя метод map()
, а внутри map()
метод обновите isComplete
для текущего todo
и просто верните обновленное значение, например:
var updatedTodos = todos.map((todo) => todo.id === id ? {
...todo,
isComplete: !todo.isComplete
} : todo);
Затем внутри setTodos()
просто верните этот новый массив updatedTodos
, например:
setTodos(updatedTodos);
Вы также можете сделать это в одну строку, например:
setTodos(todos.map((todo) => todo.id === id ? { ...todo, isComplete: !todo.isComplete } : todo));
Но предыдущий код обеспечивает большую читаемость, а также помогает улучшить отладку, если вы хотите проверить каждую переменную построчно.