Обычное
todo приложение. Есть функция, которая при клике ставит метку
completed
элементу из списка:
const toggleHandler = (id) => {
setTodos(prevState => {
return prevState.map(todo => { // проблема тут
if (todo.id === id) todo.completed = !todo.completed
return todo
})
})
}
Проблема в том, что в строгом режиме
setTodos
вызывается дважды, проставляя сперва
completed: true
и затем
completed: false
и с виду выглядит будто ничего не происходит.
В качестве решения можно отказаться от колбэка и обновлять state через spread.
Но как исправить эту проблему используя колбэк с предыдущим состоянием и
не выключая строгий режим?