> Через что прокидывается контекст в React и как изменение провайдера влияет на ререндер (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Сбер
Стек: React
> Пример ответа
В React контекст прокидывается через компонент Provider, который создаётся с помощью React.createContext(). Каждый контекст имеет свой Provider, оборачивающий дерево компонентов, которым нужен доступ к данным. Значение передаётся через проп value в Provider.
Когда значение value в Provider изменяется (например, при обновлении состояния или props родительского компонента), React вызывает ререндер всех компонентов-потребителей (тех, которые используют useContext или Context.Consumer), независимо от того, оптимизированы ли они с помощью React.memo или shouldComponentUpdate. Это происходит потому, что контекст не участвует в обычной системе мемоизации - изменение контекста считается глобальным событием, которое должно быть немедленно отражено во всех подписчиках.
Важно: ререндерятся только те компоненты, которые непосредственно используют данный контекст, а не всё дерево под Provider. Однако если потребитель сам вызывает ререндер своих дочерних элементов (например, передавая новые props), это может привести к каскадным обновлениям. Для минимизации лишних ререндеров рекомендуется разбивать контексты на логические части и использовать мемоизацию значений (например, с useMemo).
> Похожие задачи по frontend
До какого размера стоит делать React компоненты
Что произойдет, если у компонента поменять ключ, но свойства останутся те же
Какой хук в React соответствует поведению componentDidMount и componentWillUnmount
Можно ли условно вызывать хуки в React при разных рендерах
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью