发布请求 redux thunk

Posted

技术标签:

【中文标题】发布请求 redux thunk【英文标题】:Post request redux thunk 【发布时间】:2019-08-05 20:09:49 【问题描述】:

我有 GET 请求,通常当这些请求成功时,我会将数据保存在存储中,但对于 POST 请求,我需要知道它是否成功,以便执行一些代码(显示消息并重定向),文档说你可以使用 isLoading 变量,但它只是说服务是否正在工作,但如果它成功则不会,如果我尝试在商店中创建一个新的成功变量,它将在请求后永远打开,我不需要那个任何一个。我尝试从动作创建者返回一个承诺并直接在组件内部处理响应,但是在那里调用 axios 而不是使用 redux 看起来是一样的。

我的动作创建器如下所示:

export function createProject(userId, projectName) 
  return function (dispatch) 
    dispatch( type: projectsActions.START_CREATE_PROJECT );
    return ProjectsService.createProject(userId, projectName).then(() => 
      dispatch( type: projectsActions.SUCCESS_CREATE_PROJECT );
    ).catch((error) => 
      dispatch( type: projectsActions.ERROR_CREATE_PROJECT );
      throw error;
    );
  

【问题讨论】:

【参考方案1】:

我了解您的疑虑来自哪里,在您的 Redux 商店中设置一个字段只是为了知道一次性请求的成功似乎并不合适。

如果您只需要发出一个 post 请求并且只关心它的结果一次,那么最简单的方法是在发出请求的组件中使用 state。组件级状态很容易管理,并在卸载组件时从内存中删除,但另一方面,您可能希望为您的应用程序提供单一的事实来源。你必须做出选择,但你的 Redux 实现是正确的。

【讨论】:

以上是关于发布请求 redux thunk的主要内容,如果未能解决你的问题,请参考以下文章

使用 redux-thunk 取消之前的 fetch 请求

Redux-thunk 异步请求处理 onSuccess 和 onError 的最佳方法是啥?

Redux thunk - 如何防止它发出不必要的 API 请求?

使用 Redux Thunk 和 Axios 测试 Action Creator

如何使用 redux-thunk `bindActionCreators`

Redux thunk:等待异步函数调度