Перейти к основному содержимому

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)​

note

Добавлен в 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)​

note

Добавлен в 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()

Запустить пример