Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | const flattedReducer = (...args) => { const initialState = typeof args[0] !== 'function' && args.shift(); const reducers = args; if (typeof initialState === 'undefined') { throw new TypeError( 'The initial state may not be undefined. If you do not want to set a value for this reducer, you can use null instead of undefined.' ); } return (prevState, value, ...args) => { const prevStateIsUndefined = typeof prevState === 'undefined'; const valueIsUndefined = typeof value === 'undefined'; if (prevStateIsUndefined && valueIsUndefined && initialState) { return initialState; } return reducers.reduce( (newState, reducer, index) => { if (typeof reducer === 'undefined') { throw new TypeError( `An undefined reducer was passed in at index ${index}` ); } return reducer(newState, value, ...args); }, prevStateIsUndefined && !valueIsUndefined && initialState ? initialState : prevState ); }; }; export default flattedReducer; |