Проверяет понимание иммутабельности состояния в React и умение удалять элементы массива без прямого изменения исходных данных.
В React и Redux состояние считается неизменяемым: нельзя менять массив на месте через splice, pop или прямое присваивание по индексу. Причина в том, что React сравнивает ссылки на объекты, и если ссылка не изменилась, повторный рендер не произойдёт. Поэтому удаление элемента сводится к созданию нового массива без этого элемента.
const [items, setItems] = useState([1, 2, 3, 4]);
function removeItem(id) {
// создаём новый массив без элемента с нужным id
setItems(prev => prev.filter(item => item.id !== id));
}
function removeAt(index) {
setItems(prev => [
...prev.slice(0, index),
...prev.slice(index + 1)
]);
}
В Redux-редьюсере принцип тот же: возвращаем новое состояние, а не мутируем старое. Если используется Redux Toolkit, можно писать мутирующий код внутри createSlice — Immer под капотом создаст иммутабельную копию.
Итог: для удаления элементов из массива в состоянии используйте filter по значению или slice по индексу, чтобы всегда возвращать новую ссылку и гарантировать корректный ререндер компонента.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию