Перейти к основному содержимому

merge

Объединяет апдейты массива юнитов в новое событие, которое будет срабатывать при запуске любой из переданных сущностей

note

Добавлено в effector 20.0.0

Формула

declare const $store: Store<T> // триггер
declare const event: Event<T> // триггер
declare const fx: Effect<T, any> // триггер

const result: Event<T> = merge(/*clock*/ [$store, event, fx])

Аргументы

  • clock: Массив юнитов для объединения

Возвращает

Event: Новое событие

tip

В случае передачи стора, итоговое событие будет срабатывать при обновлении этого стора

Примеры

Пример 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

Запустить пример

Пример 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

Запустить пример

Пример 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

Запустить пример