Перейти к содержимому

1. React Context API

Context API — это встроенный механизм React для передачи данных через дерево компонентов без необходимости передавать пропсы вручную на каждом уровне (prop drilling).

Context идеально подходит для данных, которые можно считать “глобальными” для дерева компонентов:

  • Текущий авторизованный пользователь.
  • Тема оформления (светлая/темная).
  • Выбранный язык (локализация).
graph TD
Provider[Provider] --> C1[Component 1]
Provider --> C2[Component 2]
C1 --> C1a[Component 1a]
C2 --> C2b[Consumer Component]
style C2b fill:#f9f,stroke:#333,stroke-width:4px
  1. Создание контекста:
const ThemeContext = React.createContext('light');
  1. Обертывание провайдером:
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
  1. Потребление значения:
const theme = useContext(ThemeContext);

Context API не является полноценным стейт-менеджером. Основная проблема — избыточные ререндеры. Когда значение в Provider меняется, все компоненты, использующие useContext(MyContext), перерисовываются, даже если они используют только ту часть объекта, которая не изменилась.

ХарактеристикаContext APIСтейт-менеджеры (Zustand, MobX)
УстановкаВстроено в ReactТребуется библиотека
Prop DrillingРешаетРешает
ПроизводительностьСредняя (ререндеры)Высокая (селекторы/атомы)
ЛогикаТолько хранениеMiddleware, логика, дебаггинг
СложностьНизкаяОт средней до высокой