Write once. Reduce anywhere.
import { createStore } from 'redux'
import reduxLeaves, { bundle } from 'redux-leaves'
// set up with initial state
const initialState = {
counter: 0,
list: [],
props: {}
}
const [reducer, actions] = reduxLeaves(initialState)
const store = createStore(reducer)
// setup complete! Now dispatch actions to your heart's content
console.log(store.getState())
// => { counter: 0, list: [], props: {} }
store.dispatch(actions.counter.create.increment(10))
console.log(store.getState())
// => { counter: 10, list: [], props: {} }
store.dispatch(actions.list.create.push('foo'))
console.log(store.getState())
// => { counter: 10, list: ['foo'], props: {} }
const compoundAction = bundle([
actions.counter.create.reset(),
actions.list[0].create.concat('bar'),
actions.props.at.arbitrary.path.create.update('here I am!')
])
store.dispatch(compoundAction)
console.log(store.getState())
/*
=> {
counter: 0,
list: ['foobar'],
props: { at: { arbitrary: { path: 'here I am!' } } }
}
*/
npm install --save redux-leaves
To run all tests locally:
git clone git@github.com:richardcrng/redux-leaves.git
cd redux-leaves && npm run test a
Most tests are located alongside their relevant API documentation in the docs folder.