README
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
function
createReducer(initialState, handlers [, options={}]) ⇒ 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
});