如何从redux-api-middleware中捕获响应

时间:2018-01-09 16:16:23

标签: javascript reactjs redux redux-api-middleware

我的行动:

const someAction = () => {
  return {
    [RSAA]: {
      types: [
        SOME_REQUEST,
        SOME_SUCCESS,
        SOME_FAILURE,
      ],
      endpoint: ...,
      method: 'POST',
    }
  };
};

我用以下方式调用它:

this.props.someAction();

一切正常,我能够处理reducer中的数据。 问题是,在调用函数时,我能以某种方式获取函数的结果吗?

我的意思是这样的:

this.props.someAction().then( //success ).catch( //error );

1 个答案:

答案 0 :(得分:1)

简单地说, redux-api-middleware 完成以下步骤(更多详细信息here):

  1. 调度SOME_REQUEST操作
  2. 向您的端点发出POST请求
  3. 如果请求成功,则调度SOME_SUCCESS操作,否则调度SOME_FAILURE

您要访问的结果响应可以通过以下方式在您的Reducer中获取:

action.payload

因此,处理成功或失败的Reducer看起来像这样:

export default (state=initialState, action) => {

  switch(action.type) {

    case SOME_SUCCESS:
      let success_response = action.payload
      // some logic handling successful response
      // return modified state

    case SOME_FAILURE:
      let error_response = action.payload
      // some logic handling error message response
      // return modified state

    default:
      return state;
  }
}