PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

В чем разница между стейт-менеджером и контекстом?

Объекты и прототипы

Стейт-менеджер — это полноценное решение для управления состоянием с оптимизацией и инструментами, а Context — механизм передачи данных через дерево против prop drilling.

Context API

Транспорт данных через дерево без прокидывания props:

<ThemeContext.Provider value={theme}>...</ThemeContext.Provider>
const theme = useContext(ThemeContext);
  • Хорош для редко меняющихся глобальных данных (тема, локаль, юзер).
  • Сам не управляет состоянием (значение задаёт useState выше).
  • Минус: при изменении значения все потребители перерисовываются.

Стейт-менеджер (Redux/Zustand/MobX)

Управление состоянием:

  • Гранулярная оптимизация ре-рендеров (селекторы).
  • Инструменты (DevTools, time-travel).
  • Middleware (асинхронность, логи).
  • Предсказуемые изменения.
const count = useSelector((s) => s.count); // подписка только на count

Различия

  • Назначение: Context — транспорт; менеджер — управление.
  • Оптимизация: Context перерисовывает всех потребителей; менеджеры — гранулярно.
  • Инструменты: у менеджеров — DevTools/middleware; у Context — нет.

Как выбирать

  • Редко меняющиеся сквозные данные → Context.
  • Сложное, часто меняющееся состояние → стейт-менеджер.

Коротко для собеседования

Context — транспорт данных против prop drilling (тема, локаль), но перерисовывает всех потребителей и сам не управляет состоянием. Стейт-менеджер — управление сложным состоянием с гранулярной оптимизацией, DevTools и middleware. Для частого/сложного состояния — менеджер, для сквозных редких данных — Context.

Другие вопросы раздела