foundation

Store

Понимайте единый контейнер состояния, подписки, поток dispatch и границы Provider.

Store хранит единое дерево состояния приложения, предоставляет `getState`, `dispatch` и `subscribe`. В React дерево оборачивают в `<Provider store={store}>`; hooks `useSelector` и `useDispatch` читают и пишут через этот context.

Поток: UI dispatch action → middleware может перехватить → root reducer объединяет slice reducers → новое состояние → подписчики уведомлены → компоненты ре-рендерят выбранные части.

`configureStore` из Redux Toolkit настраивает DevTools, middleware по умолчанию (включая thunk) и optional preloaded state для SSR hydration.

Компромисс: единый предсказуемый контейнер против boilerplate и необходимости дробить состояние ради производительности.

На интервью: почему прямая мутация store ломает time-travel и обнаружение изменений.

Типовые ошибки: несколько несвязанных store, подписка на всё состояние в каждом компоненте, создание store внутри render.

Чеклист:

  • Один store на экземпляр приложения (обычно).
  • Provider в корне приложения.
  • Подписка через селекторы, не raw getState в render.
  • Осторожный preloaded state для SSR/hydration.