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.