is
Namespace for unit validators
is.store(value)
Checks if given value is store
Returns
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)
Checks if given value is event
Returns
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)
Checks if given value is effect
Returns
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)
Checks if given value is domain
Returns
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)
since
effector 22.0.0
Checks if given value is scope
Returns
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)
Checks if given value is unit: store, event, effect, domain or scope
Returns
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)
since
effector 22.4.0
Checks if given value is effect created via attach method.
If passed not an effect, returns false
.
Returns
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
Use case
Sometimes you need to add an error log on effects failures, but only on effects that have been "localized" via attach
.
If you leave onCreateEffect
as it is, without checks, the error log will be duplicated, because it will happen on the parent and the child effect.
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()