Вопрос проверяет понимание того, что именно запускает ререндер в React и почему простая мутация данных не считается изменением для React.
React делает ререндер только тогда, когда меняются state или props компонента. Изменение обычного JavaScript-объекта вне React происходит “мимо” его системы обновлений. React не отслеживает мутации и не подписывается на изменения внешних объектов. Поэтому такие изменения остаются для него невидимыми и не приводят к перерисовке.
React намеренно ограничивает источники рендера, чтобы поведение приложения было предсказуемым.
Перед перечислением важно зафиксировать базовую идею: React — это реакция на изменения входных данных.
Ререндер происходит при изменении state.
Ререндер происходит при изменении props.
Всё остальное React игнорирует.
Нет подписки
React не знает, что объект изменился.
Нет смены ссылки
даже если объект используется в компоненте, его ссылка остаётся прежней.
Нет вызова setState
React не получил сигнал о необходимости обновления.
const externalConfig = { theme: "light" };
// где-то в коде
externalConfig.theme = "dark";
// React об этом не узнает
Изменение объекта вне React не вызывает ререндер, потому что React реагирует не на мутации, а на управляемые изменения через state и props.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию