Вопрос проверяет понимание архитектурных принципов React и причин, по которым мутации считаются плохой практикой.
Иммутабельность позволяет React легко и быстро понимать, что данные изменились. Когда создаётся новый объект, меняется ссылка, и React может обнаружить это сравнением ссылок. Это делает обновления предсказуемыми и упрощает оптимизации. При мутациях таких гарантий нет, и поведение становится нестабильным.
Иммутабельность — это не требование языка, а осознанный архитектурный выбор React.
Иммутабельность состояния — это подход, при котором состояние не изменяется напрямую, а заменяется новым объектом с обновлёнными данными.
Перед перечислением важно понять цель: простое и быстрое определение изменений.
Сравнение по ссылке
prevState !== nextState — быстрый и дешёвый способ понять, что есть изменения.
Предсказуемость
состояние не может “измениться само” где-то в глубине приложения.
Оптимизации
memo, PureComponent, useCallback работают именно на смене ссылок.
Безопасность
старые рендеры не ломаются из-за внезапных мутаций.
Нужно было бы делать глубокие сравнения.
Производительность резко бы упала.
Поведение UI стало бы трудно объяснимым.
React опирается на иммутабельность, потому что смена ссылок делает обнаружение изменений быстрым, предсказуемым и масштабируемым.