Проверяет понимание принципов иммутабельности в Redux и правильных способов обновления вложенных структур данных.
Redux построен на принципе, что состояние — это неизменяемый объект. Каждый раз, когда вы хотите изменить состояние, вы создаёте новый объект, а не модифицируете старый. Это позволяет Redux отслеживать изменения через сравнение ссылок, что делает приложение предсказуемым и упрощает отладку. Если мутировать состояние напрямую, React может не обнаружить изменения, и UI не обновится.
Для массивов используйте методы, которые возвращают новый массив: map, filter, concat, или spread-оператор. Например, чтобы добавить элемент:
case 'ADD_TODO':
return {
...state,
todos: [...state.todos, action.payload]
};Чтобы удалить элемент, используйте filter:
case 'REMOVE_TODO':
return {
...state,
todos: state.todos.filter(todo => todo.id !== action.payload)
};Для обновления конкретного элемента — map:
case 'TOGGLE_TODO':
return {
...state,
todos: state.todos.map(todo =>
todo.id === action.payload ? { ...todo, completed: !todo.completed } : todo
)
};Для объектов используйте spread-оператор или Object.assign. Например:
case 'UPDATE_USER':
return {
...state,
user: {
...state.user,
name: action.payload.name
}
};Если объект вложенный, обновляйте каждый уровень отдельно, чтобы не потерять другие поля.
push, splice или прямое присваивание свойств.Вывод: Иммутабельность в Redux — это фундаментальное требование, которое обеспечивает предсказуемость и производительность. Всегда возвращайте новый объект состояния, используя spread-оператор или методы, возвращающие новые массивы. Для упрощения работы с глубокими структурами можно применять Immer.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию