Нужен ли стейт-менеджер?
Продвинутые темы
Стейт-менеджер нужен не всегда: он оправдан при сложном общем состоянии, доступном многим компонентам; для локального или простого состояния достаточно встроенных средств.
Когда стейт-менеджер НЕ нужен
- Локальное состояние —
useState/useReducerв компоненте. - Небольшое приложение — состояние в паре компонентов, prop drilling терпим.
- Редко меняющееся общее состояние — хватает Context API (тема, локаль, юзер).
- Серверные данные — их лучше держать в TanStack Query/SWR, а не в глобальном сторе.
Когда стейт-менеджер нужен
- Сложное общее состояние, используемое многими несвязанными компонентами.
- Много источников изменений, трудно отследить, что и откуда меняет данные.
- Prop drilling стал болезненным.
- Нужны инструменты отладки, time-travel, middleware.
- Производный/кешируемый стейт, сложные обновления.
Частая ошибка
Тянуть Redux в маленький проект «на всякий случай» — избыточно. И наоборот: держать серверные данные в Redux вместо TanStack Query.
Как решить
- Начать с
useState/useReducerи подъёма состояния. - Общее редко меняющееся → Context.
- Серверные данные → TanStack Query/SWR.
- Если состояние реально сложное и глобальное → Redux Toolkit/Zustand.
Коротко для собеседования
Стейт-менеджер нужен при сложном общем клиентском состоянии со многими источниками изменений и болезненным prop drilling. Не нужен для локального (useState), редко меняющегося общего (Context) и серверных данных (TanStack Query). Не тянуть Redux в маленький проект «на всякий случай».