Newer version
Idea of redux-saga-actions
has been reworked and published as redux-saga-routines
. Before using this package, please take a look at new one!
redux-saga-actions
An action creator for Redux Saga compatible with Redux Form. Forked from redux-form-saga
Why do I need this?
Reduce boilerplate from your source code when making requests to API or validating forms build on top of Redux Form.
Installation
yarn add redux-saga-actions
Important! redux-saga-actions
uses native ES2015 Promises, if the browser you are targeting doesn't support ES2015 Promises, you have provide a valid polyfill, such as the one provided by babel
.
Usage
First of all to enable redux-saga-actions
, you have to add actionsWatcherSaga
in your sagaMiddleware.run()
, for example like this:
const sagas = yourFirstSaga yourOtherSaga ... actionsWatcherSaga;sagas;
Then, use createAction
to in your code:
; // create actionconst action = ; // now your action is a function that returns promise (useful for Redux Form users)// action == (payload, dispatch) => Promise // also, you have access to sub action types constants:// action.REQUEST == 'FETCH_DATA_REQUEST';// action.SUCCESS == 'FETCH_DATA_SUCCESS';// action.FAILURE == 'FETCH_DATA_FAILURE'; // and to of sub actions creators:// action.request(payload) == { type: 'FETCH_DATA_REQUEST', payload };// action.success(payload) == { type: 'FETCH_DATA_SUCCESS', payload };// action.failure(payload) == { type: 'FETCH_DATA_FAILURE', payload }; // when you want to initialize data fetching, you need only to call action:; // then, you need to handle action.REQUEST action in your own saga to perform API request: { try // perform request to '/some_url' to fetch some data const response = ; // if request successfully finished ; catch error // if request failed ; } { }
Result of action(payload, dispatch)
is a Promise, so you can directly pass this function to Redux Form's handleSubmit
to perform async validation:
<form onSubmit=>...</form>
To properly handle form errors you have to pass to action.failure
instance of SubmissionError
:
;
redux-form-saga
:
Migration from This package is 100% compatible with redux-form-saga@0.0.7
, so feel free to use it:
// you can either use old constants and function names:; // or new if you want:;
Scripts
$ npm run test
License
MIT