> Через что прокидывается контекст в 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).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью