@georapbox/redux-create-reducer
v1.4.0
Published
Utility function to express Redux reducers as an object mapping from action types to action handlers.
Downloads
16
Maintainers
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
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
});