import { merge, type Unit } from "effector";

Methods

merge(units)

Merges an array of units (events, effects, or stores), returning a new event that triggers upon any of the given units being triggered.

merge(units: Unit[]): Event<T>

Arguments

  1. units: An array of units to be merged.

Returns

Event: A new event that fires when any of the given units is triggered.

tip

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

Types

TBD

Examples

Basic Usage

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

Working with Stores

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

Merging a Store and an Event

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