Объект с валидаторами юнитов
is.store(value)
Проверяет, является ли переданное значение стором
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
is.store(store);
// => true
is.store(event);
// => false
is.store(fx);
// => false
is.store(createDomain());
// => false
is.store(fx.pending);
// => true
is.store(fx.done);
// => false
is.store(store.updates);
// => false
is.store(null);
// => false
is.event(value)
Проверяет, является ли переданное значение событием
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
is.event(store);
// => false
is.event(event);
// => true
is.event(fx);
// => false
is.event(createDomain());
// => false
is.event(fx.pending);
// => false
is.event(fx.done);
// => true
is.event(store.updates);
// => true
is.event(null);
// => false
is.effect(value)
Проверяет, является ли переданное значение эффектом
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
is.effect(store);
// => false
is.effect(event);
// => false
is.effect(fx);
// => true
is.effect(createDomain());
// => false
is.effect(null);
// => false
is.domain(value)
Проверяет, является ли переданное значение доменом
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
is.domain(store);
// => false
is.domain(event);
// => false
is.domain(fx);
// => false
is.domain(createDomain());
// => true
is.domain(null);
// => false
is.scope(value)
Добавлен в effector 22.0.0
Проверяет, является ли переданное значение скоупом
Возвращает
boolean
import { fork } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
const scope = fork();
is.scope(scope);
// => true
is.scope(store);
// => false
is.scope(event);
// => false
is.scope(fx);
// => false
is.scope(createDomain());
// => false
is.scope(null);
// => false
is.unit(value)
Проверяет, является ли переданное значение юнитом: стором, эвентом, эффектом, доменом или скоупом
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain, fork } from "effector";
const store = createStore(null);
const event = createEvent();
const fx = createEffect();
const scope = fork();
is.unit(scope);
// => true
is.unit(store);
// => true
is.unit(event);
// => true
is.unit(fx);
// => true
is.unit(createDomain());
// => true
is.unit(fx.pending);
// => true
is.unit(fx.done);
// => true
is.unit(store.updates);
// => true
is.unit(null);
// => false
is.attached(value)
Добавлен в effector 22.4.0
Проверяет, что переданный effect был создан с помощью метода attach.
Если в качестве аргумента был передан не effect, возвращает false
.
Возвращает
boolean
import { is, createStore, createEvent, createEffect, createDomain, attach } from "effector";
const $store = createStore(null);
const event = createEvent();
const fx = createEffect();
const childFx = attach({
effect: fx,
});
is.attached(childFx);
// => true
is.attached(fx);
// => false
is.attached($store);
// => false
is.attached(event);
// => false
is.attached(createDomain());
// => false
is.attached(null);
// => false
Пример использования
Иногда нужно добавить отображение ошибок на эффекты, но только на те, которые были “локализованы” через attach
.
Если оставить onCreateEffect
как есть, без проверок, то лог ошибки будет задублирован.
import { createDomain, attach, is } from "effector";
const logFailuresDomain = createDomain();
logFailuresDomain.onCreateEffect((effect) => {
if (is.attached(effect)) {
effect.fail.watch(({ params, error }) => {
console.warn(`Effect "${effect.compositeName.fullName}" failed`, params, error);
});
}
});
const baseRequestFx = logFailuresDomain.createEffect((path) => {
throw new Error(`path ${path}`);
});
const loadDataFx = attach({
mapParams: () => "/data",
effect: baseRequestFx,
});
const loadListFx = attach({
mapParams: () => "/list",
effect: baseRequestFx,
});
loadDataFx();
loadListFx();
Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.