1.0.8 • Published 8 years ago

redux-amr v1.0.8

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

Redux async middleware and reducer

NPM Version Build Status codecov

This package wil help you dispatch async action with less boilerplate.

Install

npm install redux-amr --save

How to use

store/configureStore.js

import { asyncMiddleware } from 'redux-amr';
	
applyMiddleware(thunk, asyncMiddleware)

reducers/index.js

import { combineReducers } from 'redux';
import { reducerCreator } from 'redux-amr';

const rootReducer = combineReducers({
  async: reducerCreator()
});

export default rootReducer;

actions/index.js

import { ASYNC } from 'redux-amr';

/**
 * This actionCreator will create LOAD and LOAD_SUCCESS,
 * state.async[key] will be 'success'
 */
function success() {
  return {
    [ASYNC]: {
      key: 'key',
      promise: () => Promise.resolve('success')
    }
  }
}

/**
 * This actionCreator will create LOAD and LOAD_FAIL,
 * state.async.loadState.[key].error will be 'fail'
 */
function fail() {
  return {
    [ASYNC]: {
      key: 'key',
      promise: () => Promise.reject('fail')
    }
  }
}

Action and state

  • action

    • LOAD: data loading for particular key is started
    • LOAD_SUCCESS: data loading process successfully finished. You'll have data returned from promise
    • LOAD_FAIL: data loading process was failed. You'll have error returned from promise
  • state

    • key: Data, returned from resolved promise
    • loadState.key.loading: key.loading
    • loadState.key.loaded: Identifies that promise was resolved
    • loadState.key.error: Errors, returned from rejected promise
    • loadingNumber: Number of loading

API

  • [ASYNC]

    • key: String
    • promise: Function => Promise
      • store(Option): Object
  • reducerCreator: Function => Reducer

    • reducers(Option): Object

License

MIT

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago