First, install the middleware.
npm i redux-promise-middleware -s
Import the middleware and include it in applyMiddleware
when creating the Redux store:
import promise from 'redux-promise-middleware'​composeStoreWithMiddleware = applyMiddleware(promise,)(createStore)
Dispatch a promise as the value of the payload
property of the action.
const foo = () => ({type: 'FOO',payload: new Promise()});
A pending action is immediately dispatched.
{type: 'FOO_PENDING'}
Once the promise is settled, a second action will be dispatched. If the promise is resolved a fulfilled action is dispatched.
{type: 'FOO_FULFILLED'payload: {...}}
On the other hand, if the promise is rejected, a rejected action is dispatched.
{type: 'FOO_REJECTED'error: true,payload: {...}}
That's it!
​Use with Reducers​
​Optimistic Updates​
​Design Principles​
Copyright (c) 2017 Patrick Burtchaell. Code licensed with the MIT License (MIT). Documentation licensed with the CC BY-NC License.