IN
Size: a a a
IN
IN
EM
function holdTodos(index) {
setTodos(todos.map((todo, i) => {
if(i === index ) {
todo.completed = !todo.completed
return todo
} else {
return todo
}
}))
}АБ
function holdTodos(index) {
setTodos(todos.map((todo, i) => {
if(i === index ) {
todo.completed = !todo.completed
return todo
} else {
return todo
}
}))
}const holdTodos = (idx) => setTodos(todos => todos.map(todo, i) => i === idx ? {...todo, completed: !todo.completed} : todo) setTodos чтобы получать всегда актуальный массивEM
EM
АБ
todo.completed = !todo.completed мутация, ты не создаешь новый объект, ты мутируешь старый. ссылка сохраняется, а значит там где ожидается обновление путем ссылочного сравнения - обновления не будет.EM
todo.completed = !todo.completed мутация, ты не создаешь новый объект, ты мутируешь старый. ссылка сохраняется, а значит там где ожидается обновление путем ссылочного сравнения - обновления не будет.A
АБ
V
A
V
const apple = { weight: 10 }
contt cherry = apple
cherry.weight = 5G
RS
AZ
IN
AZ
AZ
IN