0.2.1 • Published 7 years ago

redux-state-mapper v0.2.1

Weekly downloads
15
License
MIT
Repository
github
Last release
7 years ago

StateMapper for Redux

State mapper that map the action types to reducers for Redux

Installation

npm install --save redux-state-mapper

Usage

import stateMapper from 'redux-state-mapper'

const reducer = stateMapper(initialState)
  .when('REQUEST_ACTION', ({ data }, { query }) => ({ query, data }))
  .when('SUCCESS_ACTION', 'FAILURE_ACTION', ({ query }, { data }) => ({ query, data }))

This is completely equivalent to:

const reducer = (state = initialState, action) => {
  switch (action.type) {
    case 'REQUEST_ACTION':
      return { query: action.query, data: state.data }
    case 'SUCCESS_ACTION':
    case 'FAILURE_ACTION':
      return { query: state.query, data: action.data }
    default:
      return state
  }
}

Example

import {combineReducers} from 'redux'
import stateMapper from 'redux-state-mapper'
import {
  CHANGE_LOGIN_PARAMS,
  SUCCESS_LOGIN,
  FAILURE_LOGIN,
  CATCH_AUTH_ERROR,
  SUCCESS_ME,
  FAILURE_ME } from './actions'

const initialUserState = {
    id: null,
    name: null,
    email: null,
}

export default combineReducers({
    token: stateMapper(null)
        .when(SUCCESS_LOGIN, (state, { token }) => token)
        .when(FAILURE_LOGIN, CATCH_AUTH_ERROR, () => null),
    params: stateMapper({})
        .when(CHANGE_LOGIN_PARAMS, (state, { params }) => params),
    error: stateMapper(null)
        .when(SUCCESS_LOGIN, () => null)
        .when(FAILURE_LOGIN, (state, { error }) => error),
    logged: stateMapper(false)
        .when(SUCCESS_LOGIN, () => true)
        .when(FAILURE_LOGIN, () => false),
    user: stateMapper(initialUserState)
        .when(SUCCESS_ME, (state, { payload }) => payload)
        .when(SUCCESS_LOGIN, (state, { user }) => user)
        .when(FAILURE_LOGIN, FAILURE_ME, () => initialUserState)
})

License

MIT

0.2.1

7 years ago

0.2.0

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago