attach
since
effector 20.13.0
Wrapper for effect, which allows to map effect arguments and use data from stores.
Use cases: declarative way to pass values from stores to effects and argument preprocessing.
Formulae#
When newEffect is called, call mapParams with params of the newEffect and data from source, then call original effect
- If
attachcalled withoutsource,mapParamswill be called only with params of thenewEffect attachalways returns new effect- If original
effectbelongs to some domain thennewEffectwill belong to it as well
Short example#
Short example with source#
Long example#
attach({effect, source})#
Create effect which will trigger given one with values from source stores
Arguments
effect(Effect): Wrapped effectsource(Store |{[key: string]: Store}): Store or object with stores, values of which will be passed to the second argument ofmapParams
Returns
Effect: New effect
attach({effect, mapParams})#
Create effect which will trigger given one by transforming params by mapParams function
Arguments
effect(Effect): Wrapped effectmapParams((newParams) => effectParams): Function which receives new params and maps them to the params of the wrappedeffect. Works like event.prepend. Errors happened inmapParamsfunction will force attached effect to fail
Returns
Effect: New effect
attach({effect, mapParams, source})#
Create effect which will read values from source stores, pass them with params to mapParams function and call effect with result
Arguments
effect(Effect): Wrapped effectmapParams((newParams, values) => effectParams): Function which receives new params and current value ofsourceand combines them to the params of the wrappedeffect. Errors happened inmapParamsfunction will force attached effect to failsource(Store |{[key: string]: Store}): Store or object with stores, values of which will be passed to the second argument ofmapParams
Returns
Effect: New effect
note
If mapParams throw an error, it will trigger fail event and nested effect will not be called at all
attach({effect})#
Create effect which will call effect with params as it is. That allow to create separate effects with shared behavior.
Arguments
effect(Effect): Wrapped effect
Returns
Effect: New effect
since
effector 21.5.0