Redux middleware which allows listening in on and handling of dispatched actions
npm install --save redux-listeners
For those who want to listen in on actions dispatched to the Redux store.
Includes the store's dispatch method to dispatch new actions after a listener is fired.
Much like redux-saga
, but a way more toned down implementation which also allows for async/await
.
import { createStore, applyMiddleware } from 'redux';
import { createMiddleware } from 'redux-listeners';
// import your reducers
import rootReducer from './reducers';
// create action middleware
const listenMiddleware = createMiddleware();
const store = createStore(
rootReducer,
applyMiddleware(listenMiddleware),
);
// register listeners to middleware
listenMiddleware.addListener('INIT', (dispatch) => {
dispatch({ type: 'FETCH_DATA' });
});
listenMiddleware.addListener('FETCH_DATA', (dispatch) => {
fetch('/some-data')
.then(response => response.text())
.then(text => dispatch({ type: 'FETCH_DATA_SUCCESS', payload: text }))
.catch(err => dispatch({ type: 'FETCH_DATA_FAILED', payload: err }));
});
listenMiddleware.addListener('FETCH_DATA_FAILED', (dispatch, action) => {
// display the error in console by reading the action
console.error(action.payload.message);
});
store.dispatch({ type: 'INIT' });
// This will fire the 'INIT' listener
// Which in turn dispatches the 'FETCH_DATA' action
// 'FETCH_DATA' listener is fired and asynchronously dispatches response actions
Creates the middleware you can pass into Redux.
Returns middleware: Function
Binds listener
function for each actionType
dispatched to the redux store.
actionType: String | Array
The action type or an array of action types to match.listener: Function(dispatch, action)
The function which will be called when an action of specified types is dispatched. Will receivedispatch
andaction
as arguments to dispatch new actions and read the action being dispatched.
actionType: String | Array
Same as.addListener
....listeners: Array<Function(dispatch, action)>
Same as.addListener
, but now a list of multiple listeners.
MIT