README
@redux-utilities/reduce-reducers
Reduce multiple reducers into a single reducer from left to right
Install
npm install @redux-utilities/reduce-reducers
Usage
import reduceReducers from '@redux-utilities/reduce-reducers';
const reducer = reduceReducers(
(prev, curr) => ({ ...prev, A: prev.A + curr }),
(prev, curr) => ({ ...prev, B: prev.B * curr })
);
expect(reducer({ A: 1, B: 2 }, 3)).to.deep.equal({ A: 4, B: 6 });
expect(reducer({ A: 5, B: 8 }, 13)).to.deep.equal({ A: 18, B: 104 });
FAQ
Why?
Originally created to combine multiple Redux reducers that correspond to different actions (e.g. like this). Technically works with any reducer, not just with Redux, though I don't know of any other use cases.
reduceReducers
and combineReducers
?
What is the difference between Take a look at this StackOverflow post: https://stackoverflow.com/questions/48104778/how-does-reducereducers-work