Tiny redux abstraction
$ npm install --save redux-nano
var { createAction, createActions, createReducer } = require('redux-nano')
var ACTION1 = createAction('ACTION1')
ACTION1(123) // => {type: 'ACTION1', payload: 123}
ACTION1.toString() // => ACTION1
var more = createActions('PREFIX', {
ACTION2: true,
ACTION3: true
})
more.ACTION2('sup', 'meta value')
// => {type: 'PREFIX/ACTION2', payload: 'sup', meta: 'meta value'}
more.ACTION2.toString() // => 'PREFIX/ACTION2'
var reducer = createReducer(initialState, {
[more.ACTION2]: (state, action) => {
state.value = action.payload
return state
})
})
Creates a function action creator that is also a string constant.
type (string)
: The action's typepayloadCreator (function, optional)
: Optionally transform the payload before it's passed to the reducer.metaCreator (any, optional)
): Createaction.meta
. If this is a function, it will be passed the arguments passed to the action creator. Otherwise, it will be treated as a constant value foraction.meta
.
Creates a set of action creators with the given string prefix.
prefix (string)
: The prefix to give all actions. Will be followed by a/
.actions (object)
: The actions to create. The keys are action name strings, and the values can be booleans (indicates default payloadCreator/metaCreator) or objects. If each action is an object, it can contain valuepayload
andmeta
. Example:createActions('PREFIX', { BASIC: true, ADVANCED: { payload: n => n * 2, meta: 'someMeta' } })
Creates a reducer based upon passed in definition.
defaultState (any)
: The default state for this reducer. Must be defined.definition (object)
: An object. Keys are action constants, values are reducer functions.
MIT © Andrew Joslin