A port of Re-Frame
const store = new Remo({})
store.on('my-event', (state, event) => {
// Handle business
const [type, payload] = event
state.received = payload.thing
})
store.dispatch(['my-event', { thing: true }])
// Allow events to trigger other events
store.registerEffectHandler('dispatch', (context, effect) => {
context.store.dispatch(effect)
})
store.fx('my-event', (context, evt) => {
const [type, payload] = evt
context.store.state.status = payload.status
// Causes ['my-event-2'] to be dispatched
return {
dispatch: ['my-event-2']
}
})