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

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

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