Reducer's composer for Redux. This library simplifies workflow for building actions (general and namespaced) and reducers for them in Redux.
Install from the NPM repository using yarn
or npm
:
yarn add redux-compose-reducer
npm install --save redux-compose-reducer
To create types for your actions you can use function createTypes
in this way:
import { createTypes } from 'redux-compose-reducer'
export const TYPES = createTypes(['openSideBar', 'closeSideBar'])
export const openSideBar = () => ({
type: TYPES.openSideBar,
})
export const closeSideBar = () => ({
type: TYPES.closeSideBar,
})
After it you need to create reducers for this types, right? Try this:
import { composeReducer } from 'redux-compose-reducer'
import { TYPES } from './actions'
const openSideBar = state => ({
...state,
open: true,
})
// if your reducer doesn't require state and action
// you can declare it as object that describes changes
const closeSideBar = { open: false }
export default composeReducer({
types: TYPES,
initialState: { open: false },
reducers: {
openSideBar,
closeSideBar,
},
})
To create namespaced
types you need to update createTypes
function call:
import { createTypes } from 'redux-compose-reducer'
export const TYPES = createTypes('app', ['openSideBar', 'closeSideBar'])
In such case your TYPES
object will be:
{
openSideBar: 'app/openSideBar',
closeSideBar: 'app/closeSideBar',
}
Your reducer's code remains the same (see previous example).