A redux reducer using the tuple like [ type, handler ] instead of switch statement.
npm install --save @funnyfoo/create-reducer-redux
# or
yarn add @funnyfoo/create-reducer-reduximport createReducer from '@funnyfoo/create-reducer-redux'
const Types = {
INCREMENT: 'INCREMENT',
DECREMENT: 'DECREMENT',
ADDITION: 'ADDITION'
}
const increment = function() {
return {
type: Types.INCREMENT,
}
}
const decrement = function() {
return {
type: Types.DECREMENT,
}
}
const addX = function(x) {
return {
type: Types.ADDITION,
payload: x
}
}
const inc = x => x + 1
const dec = x => x - 1
const initialState = 0
const reducer = createReducer([
[ Types.INCREMENT, inc ],
[ Types.DECREMENT, dec ],
[ Types.ADDITION, (state, action) => state + action.payload ],
], initialState)
let state;
state = reducer(state, addX(12)) // => 12
state = reducer(state, decrement()) // => 11
state = reducer(state, { type: 'other' }) // => 11Create a redux reducer with the initial state and a list of tuple of action type and handler
{Array} pairs: A list of [ ActionType, Handler ], Handler is a function with the two arguments state, action.
{Any} initialState: the initial state for the reducer
{Function}: returns a function with two arguments state, action