1.0.8 • Published 9 years ago

redux-amr v1.0.8

Weekly downloads
5
License
MIT
Repository
github
Last release
9 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

9 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago