Делаю пробный проект на реакте, столкнулся с таким то ли багом, то ли фичей:
const [todos, setTodos] = useState<Todo[]>([])
const toggleHandler = (id: number) => {
setTodos(prevState => {
const result = prevState.map(todo => {
if (todo.id === id) {
todo.completed = !todo.completed
}
return todo
})
console.log(result[0])
console.log(result)
return result
})
}
Результат такой:
То есть при запросе объекта по индексу я получаю правильный объект с измененным состоянием, а при выводе всех объектов у меня они в предыдущем состоянии. Как такое вообще может быть?
Так же замечу, что при использовании метода forEach я получаю правильный объект с completed = true, pop тоже возвращает правильный объект. А вот в случае с map я получаю старый объект с completed = false.