This helper implements an entire REST sagas flow based on minimal configuration. As long as your endpoint follows standard REST, this helper can establish a basic starting point for CRUD functionality. It is extensible, and its defaults can be overwritten. The only requirements are a name and a sagaApi
.
Returns: function
- Function that accepts redux actions object
Param | Type | Required | Description |
options |
| Yes | Options to pass to saga helper |
options.name |
| Yes | REST resource name |
options.sagaApi |
| Yes | A |
extend |
| No | A function to pass actions and add extra sagas |
const { createModule } from 'saga-slice';const { crudInitialState, crudReducers } from 'saga-slice-helpers';const { sagaApi } from './myApiFile';const name = 'todos'; // should be rest api endpoint nameconst initialState = crudInitialState();const reducers = crudReducers();const sagas = crudSaga({ name, sagaApi });const { actions } = createModule({ name, initialState, reducers, sagas });
const { takeLatest } from 'redux-sagas/effects';const { createModule } from 'saga-slice';const { crudInitialState, crudReducers, lifecycleReducers } from 'saga-slice-helpers';const { sagaApi } from './myApiFile';const { history } from './utils';const name = 'todos'; // should be rest api endpoint nameconst initialState = crudInitialState();const reducers = crudReducers({...lifecycleReducers('associateUser')});const sagas = crudSaga({name,sagaApi}, (A) => ({[A.deleteDone]: function* () {yield history.push('/todos');},[A.associateUser]: function* ({ payload }) {const { userId, todoId } = payload;yield sagaApi.put(`/todos/${todoId}/user/${userId}`,A.associateUserSuccess,A.associateUserFail)}}));const { actions } = createModule({ name, initialState, reducers, sagas });
crudSaga will implement the following based on name: 'todos'
:
Action Type | Method | Path | Success | Fail | Done |
readAll | GET |
| readAllSuccess | readAllFail | readAllDone |
readOne | GET |
| readOneSuccess | readOneFail | readOneDone |
create | POST |
| createSuccess | createFail | createDone |
update | PUT |
| updateSuccess | updateFail | updateDone |
patch | PATCH |
| patchSuccess | patchFail | patchDone |
delete | DELETE |
| deleteSuccess | deleteFail | deleteDone |