Pay attention
This documentation is for the as yet unreleased version of effector Spacewatch 23.0.

merge

[ ru ]

Merges an array of units (events, effects or stores), returns a new event, which fires upon trigger of given units

merge(units: Unit[]): Event

Arguments

  1. units: Array of units to be merged

Returns

Event: New event, which fires when any of given units is triggered

tip

In case of store, the resulting event will fire upon store updates.

Example 1

import { createEvent, merge } from "effector";

const foo = createEvent();
const bar = createEvent();
const baz = merge([foo, bar]);
baz.watch((v) => console.log("merged event triggered: ", v));

foo(1);
// => merged event triggered: 1
bar(2);
// => merged event triggered: 2

Try it

Example 2

import { createEvent, createStore, merge } from "effector";

const setFoo = createEvent();
const setBar = createEvent();

const $foo = createStore(0).on(setFoo, (_, v) => v);
const $bar = createStore(100).on(setBar, (_, v) => v);

const anyUpdated = merge([$foo, $bar]);
anyUpdated.watch((v) => console.log(`state changed to: ${v}`));

setFoo(1); // => state changed to: 1
setBar(123); // => state changed to: 123

Try it

Example 3

import { createEvent, createStore, merge } from "effector";

const setFoo = createEvent();
const otherEvent = createEvent();

const $foo = createStore(0).on(setFoo, (_, v) => v);
const merged = merge([$foo, otherEvent]);

merged.watch((v) => console.log(`merged event payload: ${v}`));

setFoo(999);
// => merged event payload: 999

otherEvent("bar");
// => merged event payload: bar

Try it

Contributors