Почему в React нельзя менять state напрямую? Например, state.count = 5.

Прямая мутация state не уведомляет React о новом состоянии и нарушает модель снимков. Для обновления нужно вызвать setter или setState с новым значением.

Короткий ответ

Что ответить на собеседовании

Прямая мутация state не уведомляет React о новом состоянии и нарушает модель снимков. Для обновления нужно вызвать setter или setState с новым значением.

Подробный разбор

Ответ с пояснениями

Прямая мутация state не уведомляет React о новом состоянии и нарушает модель снимков. Для обновления нужно вызвать setter или setState с новым значением.

Для объекта счётчика: setState(prev => ({ ...prev, count: 5 })). Копировать нужно и затронутые вложенные уровни, а не только верхний объект. Иначе старые ссылки могут измениться незаметно для мемоизации, а предыдущие рендеры и обработчики увидят неожиданно изменённые данные.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее