redux-extendable-reducer
Redux reducer capable of lazily extending itself. Useful for large single page applications that utilize bundle splitting.
NOTE: formally redux-injectable-reducer
Install
npm install --save redux redux-extendable-reducer
Usage
;; const countReducer = { if actiontype === 'INCREMENT_COUNT' return state + 1; return state;}; const incrementCount = type: 'INCREMENT_COUNT' ; const store = ; store; console; // undefined store; console; // 0 store; console; // 1
with React
;;;;;; const countReducer = { if actiontype === 'INCREMENT_COUNT' return state + 1; return state;}; const incrementCount = type: 'INCREMENT_COUNT' ; static propTypes = count: PropTypesnumber extendReducer: PropTypesfuncisRequired incrementCount: PropTypesfuncisRequired ; { thisprops; } { thisinterval = ; } { ; } { return <span>thispropscount</span>; } const ConnectedApp = App; const store = ; ReactDOM;
Action Buffering
When the root reducer is extended, a buffer is created for each namespace that is introduced. This marks a place in the history for the root reducer to start buffering actions for a given namespace. This is useful for server side rendering where your client store would be created with initial state from the server store. Since the root reducer is extended lazily, you would want actions to be put into a buffer for each namespace that was introduced to the server store. Once the root reducer is extended in the client store, the buffer for each namespace is flushed and handled by the respective namespace reducer.