Comments 3
В упрощённом виде React-компонент перерисовывается, когда:
обновился state внутри компонента;
пришли новые props;
перерендерился родитель (и по цепочке — дочерние компоненты тоже);
изменилось значение Context у Provider (и обновились подписчики).
Дилетантство. Как компонент узнает, что у него изменились пропсы, если не был вызван его ререндер по трём другим причинам? Положите пропсы в какой-нибудь let/ref, а потом поменяйте их - ничего не случится
Вы правы, 'пришли новые пропсы' — некорректная формулировка. Мы использовали упрощение, которое иногда мешает понять механику. Причина всегда одна из трёх: обновился state компонента, перерендерился родитель или изменился контекст. Новые пропсы — это то, что компонент получает в результате рендера родителя, а не самостоятельная причина.
Практическая оптимизация React: ререндеры, Context, списки, INP и code splitting