PassFront
  1. PassFront
  2. База знаний
  3. Хуки

В чем разница между useState и state manager?

Хуки

Разница в зоне действия и назначении: useState — локальное состояние одного компонента; state manager — общее состояние приложения вне дерева компонентов.

useState: локальное состояние

const SearchBox = () => {
  const [query, setQuery] = useState(''); // живёт только в этом компоненте
  ...
};
  • Принадлежит экземпляру компонента; исчезает при размонтировании.
  • Передаётся вниз через props, вверх — через колбэки.
  • Ноль инфраструктуры: встроено в React.

State manager (Redux, Zustand, MobX): глобальное состояние

const useCart = create((set) => ({
  items: [],
  add: (item) => set((s) => ({ items: [...s.items, item] })),
}));

// любой компонент, на любом уровне:
const items = useCart((s) => s.items);
  • Стор живёт вне дерева: доступен из любого компонента без props, переживает размонтирования.
  • Точечные подписки селекторами — рендерится только заинтересованный компонент.
  • Централизованная логика обновлений, девтулзы, middleware.

Как выбирать

  • useState — всё локальное: поля форм, открытость модалок, табы, hover. Дефолт: начинать всегда с него.
  • Подъём состояния / Context — состояние на несколько соседних компонентов.
  • State manager — когда состояние нужно многим несвязанным частям приложения, часто меняется и имеет сложную логику: корзина, авторизация, realtime-данные.
  • Серверные данные — отдельная категория: React Query, а не стор.

Признак перехода: одно и то же состояние «поднято» слишком высоко и пробрасывается через много уровней, либо логика обновлений размазана по компонентам.

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

useState — локальный стейт компонента (умирает с ним, передаётся через props); state manager — внешний стор с глобальным доступом, селекторами и централизованной логикой. Начинать с useState; стор подключать, когда состояние стало общим и сложным; серверные данные — в React Query.

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