Что такое сторы в управлении состоянием
Что проверяют
Понимаете ли вы, зачем состояние вообще выносят из компонентов, и где проходит граница между данными сервера и собственным состоянием интерфейса. Ответ уровня «стор это хранилище» ничего не даёт: интервьюер хочет услышать, какую проблему вы этим решаете и чем платите.
Как отвечать
Стор это объект, который живёт вне дерева компонентов и хранит состояние вместе со способом его менять и подписываться на изменения. Минимальный контракт любого стора: прочитать текущее значение, изменить его предусмотренным способом, уведомить подписчиков. В React внешние источники подключаются через useSyncExternalStore, на нём стоят и Zustand, и Redux.
Дальше стоит показать, что реализации различаются моделью обновления. Redux Toolkit держит одно дерево, меняет его чистыми редьюсерами и даёт историю действий в devtools. Zustand это тот же принцип без церемоний. MobX и Jotai идут от реактивности: подписка вычисляется сама, перерисовывается только то, что читает изменившееся значение.
Главная мысль сильного ответа: не всё состояние одинаково. Ответы сервера это кэш, у него есть срок жизни, повторные запросы и инвалидация, и для него берут TanStack Query или RTK Query. В сторе остаётся то, чего на сервере нет: открытые модалки, фильтры, черновики форм, шаги мастера.
Где спотыкаются
Складывают в глобальный стор ответы API и пишут руками то, что уже решено библиотеками кэширования: обновление по фокусу, дедупликацию одинаковых запросов, устаревание. Кода становится втрое больше, а данные всё равно расходятся между экранами.
Подписываются на стор целиком. Компонент, которому нужен один флаг, перерисовывается на любое изменение любого поля, и лечится это селектором на срез плюс сравнением по значению.
Кладут в стор то, что нужно одному экрану. Глобальным состояние делают не потому, что его много, а потому, что его читают из разных мест, и локальный useState остаётся правильным ответом чаще, чем кажется.