Skip to content

Instantly share code, notes, and snippets.

@AdamMaras
Created November 7, 2015 17:30
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save AdamMaras/31f4893905d851b6305c to your computer and use it in GitHub Desktop.
Save AdamMaras/31f4893905d851b6305c to your computer and use it in GitHub Desktop.
Redux dependency injection middleware
export default function createInjectMiddleware(map) {
return store => next => action => {
if (typeof action !== "object"
|| typeof action.payload !== "function"
|| action.meta == null
|| action.meta.inject == null) {
return next(action);
}
const defaultInjections = {
action, store, dispatch: store.dispatch, getState: store.getState
}
const injections = Object.assign({}, defaultInjections, map);
let argumentMap = action.meta.inject.map(k => injections[k]);
action.payload(...argumentMap);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment