A general-purpose reducer.
To use Recruit with your app, install it as a dependency:
# If you use npm:
npm install recruit lodash-es
# Or if you use Yarn:
yarn add recruit lodash-es
Note that lodash-es
is peer dependencies of this plugin that need to be installed separately.
import { mapReducer } from 'recruit';
let state = null;
state = mapReducer(state, {type: 'set', payload: {id: 1, name: 'Recruit'}});
// {id: 1, name: 'Recruit'}
state = mapReducer(state, {type: 'merge', payload: {name: 'Sanonz', gender: 0}});
// {id: 1, name: 'Sanonz', gender: 0}
import { listReducer } from 'recruit';
let state = [];
state = mapReducer(state, {type: 'add', payload: 1});
// [1]
state = mapReducer(state, {type: 'addAll', payload: [5, 6]});
// [1, 5, 6]
state = mapReducer(state, {type: 'insert', payload: [index: 1, element: 2]});
// [1, 2, 5, 6]
state = mapReducer(state, {type: 'insertAll', payload: [index: 2, elements: [3, 4]]});
// [1, 2, 3, 4, 5, 6]
state = mapReducer(state, {type: 'remove', payload: 5});
// [1, 2, 3, 4, 6]
state = mapReducer(state, {type: 'removeAll', payload: [3, 4]});
// [1, 2, 6]
state = mapReducer(state, {type: 'replace', payload: {oldElement: 6, newElement: 3}});
// [1, 2, 3]
state = mapReducer(state, {type: 'pop');
// [1, 2]
state = mapReducer(state, {type: 'pop', payload: 0);
// [2]
state = mapReducer(state, {type: 'fill', payload: [3, 4, 5]});
// [3, 4, 5]
This is an interactive version of the code that you can play with online.
Action | Description |
---|---|
{type: 'set', payload: x} |
Sets the x of the object. |
{type: 'merge', payload: x} |
Deeply mix the properties of x into the object. |
Action | Description |
---|---|
{type: 'add', payload: x} |
Appends the x to the end of this list. |
{type: 'addAll', payload: [x]} |
Appends all of the elements in the x collection to the end of this list. |
{type: 'insert', payload: {index: idx, element: x}} |
Inserts the x at the idx in this list. |
{type: 'insertAll', payload: {index: idx, elements: [x]}} |
Inserts all of the [x] at the idx in this list. |
{type: 'remove', payload: x} |
Removes the first occurrence of the x from this list. |
{type: 'removeAll', payload: [x]} |
Removes from this list all of its elements that are contained in the [x] . |
{type: 'replace', payload: {oldElement, newElement}} |
Replaces each element of this list with the result of applying the operator to that element. |
{type: 'pop', payload: idx} |
Removes element at the given idx . If no idx is specified, pop removes the last item in the list. |
If you find a bug, please file an issue on our issue tracker on GitHub.