is
Объект с валидаторами юнитов
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()