PassFront
  1. PassFront
  2. База знаний
  3. Контекст и State managers

В чем разница между Redux и React Context?

Контекст и State managers

Сравнение не совсем корректное по уровню: Context — механизм доставки данных по дереву, Redux — полноценная система управления состоянием. Пересекаются они только в задаче «избежать prop drilling».

Что такое каждый

  • React Context — встроенный транспорт: провайдер кладёт value, потомки читают через useContext. Самого «управления состоянием» нет — состояние живёт в useState/useReducer.
  • Redux — стор вне дерева + строгий однонаправленный поток (dispatch action → reducer → новое состояние) + подписки; Redux Toolkit добавляет удобный API, девтулзы, middleware.

Отличия

  • Подписки: useContext перерендеривает всех потребителей при любом изменении value; Redux useSelector — только компоненты, чей выбранный кусок изменился.
  • Логика обновлений: в контексте — произвольная (сеттеры), в Redux — централизована в редьюсерах, тестируется отдельно.
  • Инструменты: Redux DevTools (история экшенов, time travel), middleware (логирование, сайд-эффекты); у контекста ничего этого нет.
  • Бойлерплейт: контекст — ноль зависимостей и минимум кода; Redux — заметная инфраструктура (слайсы, стор, провайдер).
  • Забавный факт: react-redux сам использует Context, но лишь для передачи инстанса стора, подписки идут мимо контекста.

Когда что выбирать

  • Context: редко меняющиеся «окружающие» данные — тема, локаль, текущий пользователь, DI сервисов.
  • Redux (или Zustand): сложное, часто обновляемое состояние со множеством потребителей и взаимосвязанной логикой — корзина, редактор, realtime-данные.
  • Серверные данные — вообще React Query, не то и не другое.

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

Context — транспорт значений по дереву без селекторов: любое изменение будит всех потребителей; состояние им не «управляется». Redux — внешний стор с точечными подписками, централизованными редьюсерами и девтулзами. Тема/локаль/пользователь — контекст; сложное динамичное состояние — Redux/Zustand.

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