import { forward, type Subscription } from "effector";Method to create connection between units in a declarative way. Send updates from one set of units to another.
Methods
forward({ from, to })
Deprecated
Since effector 23.0.0.
The core team recommends using sample instead of forward.
Formulae
forward({ from: Unit | Unit[], to: Unit | Unit[]}): SubscriptionArguments
-
from(Unit | Unit[]): Source of updates. Forward will listen for changes of these units- if an Event is passed,
towill be triggered on each event trigger and receives event argument - if a Store is passed,
towill be triggered on each store change and receives new value of the store - if an Effect is passed,
towill be triggered on each effect call and receives effect parameter - if an array of units is passed,
towill be triggered when any unit infromarray is triggered
- if an Event is passed,
-
to(Unit | Unit[]): Target for updates.forwardwill trigger these units with data fromfrom
Returns
Subscription: Unsubscribe function. It breaks connection between from and to. After call, to will not be triggered anymore.
since
Arrays of units are supported since effector 20.6.0
Examples
Send store updates to another store
import { createStore, createEvent, forward } from "effector";
const $store = createStore(1);const event = createEvent();
forward({ from: event, to: $store,});
$store.watch((state) => console.log("store changed: ", state));// => store changed: 1
event(200);// => store changed: 200Forward between arrays of units
import { createEvent, forward } from "effector";
const firstSource = createEvent();const secondSource = createEvent();
const firstTarget = createEvent();const secondTarget = createEvent();
forward({ from: [firstSource, secondSource], to: [firstTarget, secondTarget],});
firstTarget.watch((e) => console.log("first target", e));secondTarget.watch((e) => console.log("second target", e));
firstSource("A");// => first target A// => second target AsecondSource("B");// => first target B// => second target B