import { createStore } from 'redux'
import riduce from 'riduce'
const museumState = {
isOpen: false,
visitor: {
counter: 0,
guestbook: ['richard woz here']
}
}
const [reducer, actions] = riduce(museumState)
const { getState, dispatch } = createStore(reducer)
Riduce's actions
gives us access to lots of atomic action creators at any node on our state tree, e.g.
actions.isOpen.create.toggle()
actions.visitor.counter.create.increment(5)
actions.visitor.guestbook.create.push("LOL from js fan")
We can build a single complex action out of these atomic actions using bundle
:
import { bundle } from 'riduce'
const actionsBundle = bundle([
actions.isOpen.create.toggle(),
actions.visitor.counter.create.increment(5),
actions.visitor.guestbook.create.push("LOL from js fan")
])
dispatch(actionsBundle)
getState()
/*
{
isOpen: true,
visitor: {
counter: 5,
guestbook: [
'richard woz here',
'LOL from js fan'
]
}
}
*/