Introduction

Installation

First, install the middleware.
npm i redux-promise-middleware -s

Setup

Import the middleware and include it in applyMiddleware when creating the Redux store:
import promise from 'redux-promise-middleware'
​
composeStoreWithMiddleware = applyMiddleware(
promise,
)(createStore)

Use

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!

Further Reading