Skip to content

Основные идеи

Эффект прежде всего

Query оборачивает ваш реальный effector Effect. Это не чёрный ящик с внутренним исполнителем — ваш эффект остаётся полноценным юнитом: виден в devtools, композируется через attach, дружит с fork для SSR и тестов.

ts
const query = createQuery({ effect: myFx });
query.__.effect === myFx; // тот самый эффект

Жизненный цикл и статус

$status идёт по 'initial' → 'pending' → 'done' | 'fail'. Query предоставляет:

стор/событиезначение
$dataпоследний (провалидированный, смапленный) результат
$errorпоследняя ошибка
$statusinitial | pending | done | fail
$pendingзапрос (или ретрай) в полёте
$staleтекущие данные старше staleAfter
$paramsпоследние параметры запуска
finished.{done,fail,finally}события жизненного цикла
abortedрезультат отброшен (concurrency / cancel / skip)

Триггеры

  • start(params) — запустить, учитывая cache / concurrency / enabled.
  • refresh(params) / refetch(params) — запустить, минуя свежесть кэша.
  • reset() — вернуть в initial, прервать in-flight.
  • cancel() — прервать in-flight, данные оставить.

Движок

Внутри query — граф обычных юнитов effector (createStore / createEvent / sample). Вся машинерия (concurrency, retry, cache) живёт в движке и настраивается операторами; inline-опции createQuery — сахар над ними. Значения конфига могут быть константами или реактивными Store — см. sourced-конфиг.

SSR и тесты

Поскольку под капотом это обычный effector, fork() + allSettled() работают как обычно — без специальных тестовых утилит. См. SSR и тесты.

Под лицензией MIT