RequestStore
Выполняет отдельный запрос без сохранения результата в общем кэше запросов, и хранит его MobX-состояние. Подходит для авторизации, регистрации, отправки форм, загрузки файлов, экспорта и одноразовых проверок.
API-слой получает и проверяет данные, store управляет запросом, а React-компонент работает только со store.
Query Layer организует работу с server state — данными, которые приложение получает с backend. Библиотека не рисует интерфейс и не описывает бизнес-модель. Она связывает Axios-запрос, MobX-состояние и кэш.
Обычный поток выглядит так:
flowchart LR
UI["React-компонент"] --> Store["MobX domain store"]
Store --> Handler["Query Layer API"]
Handler --> Api["API-функция"]
Api --> Backend["Backend"]| Слой | За что отвечает |
|---|---|
| API-функция | HTTP-метод, URL, DTO, Axios config и проверка ответа |
| Query Layer API | Запуск, отмена, retry, статус, ошибка и при необходимости кэш |
| Domain store | Скрывает техническую работу с запросом, преобразует данные UI в формат API и содержит вычисляемые значения и бизнес-правила feature |
| React-компонент | Отображение данных и передача пользовательских действий в store |
Query Layer не заменяет Axios, MobX или Valibot. Axios отправляет запрос, MobX делает состояние реактивным, Valibot при необходимости проверяет ответ, а Query Layer объединяет их в единый процесс: запуск запроса, загрузку, обработку результата, ошибки, отмену и кэширование.
loading, status, error и отмена работают одинаково во всех feature;queryKey — адрес, по которому данные можно найти, обновить или пометить устаревшими;InfiniteQueryStore управляет курсорной пагинацией и объединяет загруженные страницы;QueryRuntime;| Ситуация | API | Создание |
|---|---|---|
| Одноразовый запрос без query-кэша | RequestStore | createRequestStore(...) |
| Ручное кэшируемое чтение | FetchStore | new FetchStore(...) |
| Автоматическое реактивное чтение | QueryStore | createQueryStore(...) |
| Изменение данных с обработкой результата и обновлением кэша | MutationStore | new MutationStore(...) |
| Cursor pagination | InfiniteQueryStore | createInfiniteQueryStore(...) |
| Общий кэш, настройки запросов и MF | QueryRuntime | createQueryRuntime(...) |
Слово create здесь означает factory-функцию, которая возвращает экземпляр. У FetchStore и MutationStore таких factory-функций нет — они создаются обычным new.
Начните с быстрого старта. Затем откройте страницу того API, который подходит вашей задаче.