Skip to content

Zalastax/redux-action-translator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

redux-action-translator

js-standard-style dependencies

Translate dispatched actions to other actions, for compatibility with reducers/middleware you don't control. E.g. when an action should trigger a history change in redux-router

It's preferable to update your reducers/middleware to acknowledge the source action, but that's not always possible.

Installation

$ npm install redux-action-translator

Usage

Installing the middleware:

import translator from 'redux-action-translator'
import {createStore, applyMiddleware} from 'redux'

const translation = translator({})
applyMiddleware(translation)(createStore)

Translations match on action.type and expect a value of the type [Action] | (a: Action, getState: () => State) => [Action]

E.g.

const evenAction = (n) => ({ type: "even", payload: a.payload })
const oddAction = (n) => ({ type: "odd", payload: n })

const translation = translator({
  "login_complete": [replace("/")],
  "registration_complete": [replace("/"), welcome()],
  "number": a => a.payload % 2 ? [oddAction(a.payload)] : [evenAction(a.payload)],
  "unauthorized": (a, getState) => [redirect(`/login?redirect=${getState().router.location.pathname}`)],
});

applyMiddleware(translation)(createStore)

...

// dispatches registrationComplete, then replace("/), then welcome()
dispatch(registrationComplete())

// dispatches numberAction, then oddAction if it's odd, or evenAction if it's even
dispatch(numberAction(n))

About

Translate dispatched actions to other actions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published