Skip to content

richardcrng/redux-leaves

Repository files navigation

Redux Leaves

Write once. Reduce anywhere.

Travis (.org) Coverage Status bundle size npm version

Example

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!' } } }
  }
*/

Documentation

npm install --save redux-leaves

Main documentation website

Getting started

API reference

Testing

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.