graph TD
A[Главный компонент] --> B(Context.Provider)
B --> C[Компонент А]
B --> D[Компонент Б]
B --> E[Компонент В]
D --> F[Компонент Б1]
D --> G[Компонент Б2]
F --> H[useContext hook]
Проблема: При обновлении контекста React по умолчанию ререндерит все компоненты, подписанные через useContext()
, даже если они не используют изменившуюся часть состояния. В сложных приложениях это приводит к катастрофическому падению производительности.
Механизм проблемы: почему это происходит
React Context — не система управления состоянием, а механизм передачи данных. Когда значение в провайдере меняется, React помечает всех потребителей этого контекста как нуждающихся в обновлении. Проверка "что именно изменилось" отсутствует на уровне движка:
...