2.0.2 • Published 7 years ago

redux-api-async v2.0.2

Weekly downloads
23
License
ISC
Repository
github
Last release
7 years ago
开发react+redux项目中,当我们需要向服务器请求数据的时候,就涉及到了异步操作,但是redux中的action是一个消息体,我们怎么办呢,于是就会出现这样的代码

redux-api-async

api/main.js(专门存放异步操作的文件,也可以按模块划分,然后组合到一起)

import Detail from 'detail.js'
export default {
  //getState 能拿到redux的全部状态
  //param 额外的参数
  MAIN_LOAD_DATA:(getState,param)=>{
    return Fetch({url:'',data:param})
  },
  Detail
}

api/detail.js

export default {
  //getState 能拿到redux的全部状态
  //param 额外的参数
  DETAIL_LOAD_DATA:(getState,param)=>{
    return Fetch({url:'',data:param})
  }
}

store.js

...
import apiMiddleware from 'redux-api-async'
import mainApi from './api/main'
const createStoreWithMdware = applyMiddleware(
apiMiddleware( 
  mainApi
)
)(createStore);
...

action.js

import {createAsync,Api} from 'redux-api-async'
export function loadOtherData(){
  return createAsync(
    Api.MAIN_LOAD_DATA,
    {},
    createAsync(
      Api.DETAIL_LOAD_DATA,
      {}
    )
  )
}

只专注action.js你会发现,通过action的嵌套来实现了请求的一次调用,请求依赖的问题 另外还剩下一个问题就是请求参数更新的问题,当我们发送action的时候,我们需要自己去合并参数,而在redux-api-async中的api函数里可以通过getState拿到最新的值,看下例子 api接口

   MAIN_LOAD_DATA:(getState,param)=>{
    const count = getState().main.count
    return Fetch({url:'',data:{count}})
  }

action

  export function changeCount(data){
    return {
      type:'CHANGE_COUNT',
      data,
      ...(createAsync(
        Api.MAIN_LOAD_DATA,
        {},
        createAsync(
          Api.DETAIL_LOAD_DATA,
          {}
        )
      ))
    }
  }

reducer

  ['CHANGE_COUNT']:(state,action)=>{
    return Object.assign({},state,{count:action.data})
  }

但我们发送action,dispatch(changeCount(3))后,MAIN_LOAD_DATA里得到的count就是3

redux-api-async的概念

api

上例中就对应到api/detail.js和api/main.js中的函数

DETAIL_LOAD_DATA:(getState,param)=>{
  //通过getState 可以拿到最新的值
  //param对应到createAsyncd的param
  return Fetch({url:'',data:param})
}

createAsync(type,param,callback,sub) | (type,param,sub)

. type : api名,上例中为MAIN_LOAD_DATA,DETAIL_LOAD_DATA . param : api接口参数,上例中为param . callback : 异步操作成功回调,返回值不为空则作为接下来的请求的param . sub:依赖上一次请求调用成功的另一外一次请求

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.6

7 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