redux-create-reducer
Utility function to express Redux reducers as an object mapping from action types to action handlers.
Install
$ npm install --save @georapbox/redux-create-reducer
API
createReducer(initialState, handlers [, options={}]) ⇒ function
Returns: function
- A function that returns the next state tree, given the current state tree and the action to handle.
Param | Type | Description |
---|
initialState | * | The initial state of the reducer. |
handlers | Object.<String, Function> | A plain object mapping action types to action handlers. |
[options={}]1 | Object | A plain object for available options. |
1 Available options
Option | Type | Default | Description |
---|
throwForUndefinedHandlers | Boolean | false | If set to true or any truthy value, it will throw Error if undefined action handler is encountered (development environment); otherwise it will just print a warning in console. It has no effect in production environment. |
Usage
import createReducer from '@georapbox/redux-create-reducer';
const actionTypes = {
ADD_TODO: 'ADD_TODO',
TOGGLE_TODO: 'TOGGLE_TODO'
};
const initialState = [];
const handlers = {
[actionTypes.ADD_TODO]: function addTodoHandler(state, action) {
return [
...state,
{
id: action.id,
text: action.text,
completed: false
}
];
},
[actionTypes.TOGGLE_TODO]: function toggleTodoHandler(state, ation) {
return state.map(todo =>
todo.id === action.id
? {...todo, completed: !todo.completed}
: todo
);
}
};
export const todosReducer = createReducer(initialState, handlers, {
throwForUndefinedHandlers: true
});
License
The MIT License (MIT)