0.0.1 • Published 8 years ago

redux-trigger-middleware v0.0.1

Weekly downloads
4
License
ISC
Repository
github
Last release
8 years ago

redux-trigger-middleware

Middleware that lets you call predefined functions on certain actions.

Install it

npm i -S redux-trigger-middleware

Test it

git clone https://github.com/saintcrawler/redux-trigger-middleware.git && cd redux-trigger-middleware

npm i && npm test

Use it

It just sits in your middleware chain and listens for trigger actions. You must supply it with triggers configuration object.

There are 3 types of triggers: 1. By action type. Triggers if action.type === trigger.type. 2. By predicate. Triggers if pred(action) returns true. 3. By array of action types. Triggers if [type1, type2, type3].some(t => t === action.type).

Here is an example config object:

const config = {
  actions: [
    {
      trigger: 'STRING_TRIGGER',
      handler: (action, dispatch) => {
        dispatch({type: 'iHaveBeenTriggered!'});
      }
    },
    {
      trigger: (action) => { return action.payload === 777 },
      handler: (a, d) => d({type: 'lucky!'});
    },
    {
      trigger: ['SOMEBODY', 'CALL', 'ME!'],
      handler: (a, d) => d({type: 'thanks'});
    }
  ]
}

As you may guess handler is a function that will be called on successful trigger.

In order to capture as most actions as possible, you may want to place this middleware at the end of the chain (but, probably, before some loggers, such as redux-logger). That's because your other middlewares can dispatch actions too and, sure, you want to catch 'em all.

Here is the complete example:

import Trigger from 'redux-trigger-middleware'

const trigger = new Trigger(config); // `config` is from above
const enhancer = applyMiddleware(
  //thunk,
  //myOtherMiddleware,
  trigger.middleware,
  //logger
);
const store = createStore(reducer, {}, enhancer);
// And use it as you wish...

Bonus

Also, this is a nice way to perform api calls. Use it together with redux-call-api.

License

ISC