# redux-handler-middleware

> Middleware that executes custom handlers before and after state updates.

Latest version **1.0.4** (published 2017-09-21) · ISC license · 0 weekly downloads

## Install

```sh
npm install redux-handler-middleware
pnpm add redux-handler-middleware
yarn add redux-handler-middleware
bun add redux-handler-middleware
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2017-09-21 |
| First published | 2017-08-31 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Zach Perkitny |
| Maintainers | zachperkitny |
| Keywords | redux, middleware |

## Links

- npm: https://www.npmjs.com/package/redux-handler-middleware
- Repository: https://github.com/ZachPerkitny/redux-handler-middleware
- Homepage: https://github.com/ZachPerkitny/redux-handler-middleware#readme
- Issues: https://github.com/ZachPerkitny/redux-handler-middleware/issues
- npm.io page: https://npm.io/package/redux-handler-middleware

## Dependencies (1)

- [lodash.find](https://npm.io/package/lodash.find.md) ^4.6.0

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 1.0.4 (latest) — 2017-09-21
- 1.0.3 — 2017-08-31
- 1.0.2 — 2017-08-31
- 1.0.1 — 2017-08-31

## README

### Redux Handler Middleware [![CircleCI](https://circleci.com/gh/ZachPerkitny/redux-handler-middleware.svg?style=svg)](https://circleci.com/gh/ZachPerkitny/redux-handler-middleware)

Middleware that executes custom handlers before and after state updates. This can be especially useful for handling navigation redirects.

#### Install
`npm install redux-handler-middleware --save`

#### Quick Example
`middleware/handlerMiddleware.js`
```javascript
import browserHistory from 'react-router/lib/browserHistory';
import createHandlerMiddleware from 'redux-handler-middleware';
import {FETCH_POST_FAILURE, FETCH_POSTS_FAILURE} from 'constants/blog';

const handlerMiddleware = createHandlerMiddleware([{
    actions: [FETCH_POSTS_FAILURE, FETCH_POST_FAILURE],
    afterHandler: (store, action) => {
        if(action.payload.status === 404){
            browserHistory.push('/404');
        }
    }
}]);

export default handlerMiddleware;
```
`store/createStore.js`
```javascript
import { createStore, applyMiddleware, combineReducers } from 'redux';
import handlerMiddleware from 'middleware/handlerMiddleware';
import rootReducer from 'reducers';

export default createStore(
    rootReducer,
    {},
    applyMiddleware(handlerMiddleware)
);
```
So now when a `FETCH_POSTS_FAILURE` or a `FETCH_POST_FAILURE` action is dispatched, the afterHandler will be invoked after the state updates and it will redirect you to `/404`. This provides a simple and intuitive solution to navigating in response to actions.

#### Usage
`createHandlerMiddleware` - Function

Must be passed an array of plain objects.
##### Defining Handlers
`action` -  String

The type of the action. This is used when determining which handlers to fire.

`actions` - Array of actions

This is useful when multiple action types use the same handler.

`beforeHandler` - Function

Handler to be called before the state is updated.

`afterHandler` - Function

Handler to be called after the state is updated.


##### Special Thanks
to [Diego Castillo](https://github.com/diegocasmo) who came up with the original idea in his [blog post](https://medium.com/trisfera/navigation-redirects-through-redux-middleware-1d2518695fd1).

---
_Source: https://npm.io/package/redux-handler-middleware · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
