redux-thunk-sync-creators
v1.0.0
Published
Creator functions for basic async actions with redux
Downloads
1
Readme
Redux Thunk Sync Creators
Generator functions for synchronous Redux actions commonly used with redux-thunk. The reducers use [immutable] state, which supports more efficient state diffing. The following API is described as if the 'resource' being passed in is 'user'. As the resource changes, so to do the names of the actions and action creators associated with that resource:
isImmutable(item)
Returns true
if the item is immutable, and false
otherwise.
actionTypesFor(resource)
Generates action types for a resource, which is a string. The return value will be an object that has three values:
- USER_FETCH_START
- USER_FETCH_SUCCESS _ USER_FETCH_ERROR
These action types are used in the other methods in this API, such as actionCreatorsFor
and reducersFor
.
actionCreatorsFor(resource)
Generates the following action creators for a resource:
- userFetchStart()
- userFetchSuccess(users)
- userFetchError(error)
These action creators create the expected action objects. See reducersFor
for information on what new state these action creators will produce.
reducersFor(resource)
Generates a reducer that handles those actions described in actionCreatorsFor
. The following action types are handled in the following ways:
USER_FETCH_START
Generated by calling the userFetchStart() function. This will produce the following variations in the next state returned by the reducer:
- isFetching: true
- error: null All other values will remain consistent with the previous state of the reducer.
USER_FETCH_SUCCESS
Generated by calling the userFetchSuccess(users) function. This will produce the following variations in the next state returned by the reducer:
- users: the users argument passed into the creator
- isFetching: false
- error: null All other values will remain consistent with the previous state of the reducer.
USER_FETCH_ERROR
Generated by calling the userFetchError(error) function. This will produce the following variations in the next state returned by the reducer:
- users: the users argument passed in
- isFetching: false
- error: the error argument passed into the creator All other values will remain consistent with the previous state of the reducer.
initialFrom(reducer)
This will generate the initial immutable state from a given reducer. For example, if the resource is 'user', the state will be an immutable object with the following characteristics:
- users: null
- isFetching: false
- error: null
Extending reducers
The standard way to use the reducer generator is to provide the reducersFor
function as a wrapper around the default case in your own cases. For example, your reducer might look something like this:
import {
initialFrom,
reducersFor
} from 'redux-thunk-sync-creators'
const defaultUserReducer = reducersFor('user')
export default (state = initialFrom(defaultUserReducer), action) => {
switch (action.type) {
/** ... Your own custom cases **/
default:
return defaultUserReducer(state, action)
}
}