Redux-Thunk 和 Redux-Promise 与 Axios api 一起使用时有什么区别?

What are the differences between Redux-Thunk and Redux-Promise when used with Axios apis?

几个月以来我一直在使用 React 和 Redux。生态系统中最令人困惑的部分之一是异步数据流。有许多很棒的解决方案可用,为您的问题选择正确的解决方案是困难的部分。

在我的应用程序中,动作创建者大多对我的后端 API 进行异步 axios [ajax] 调用。注入 Redux-Promise 作为中间件解决了异步数据流的问题。

考虑到可扩展的应用程序,我可能需要在我的 action creator 中链接多个 axios 调用。我想我仍然可以使用 Redux-Promise 作为中间件,这将处理我应用程序中的异步数据流。

总的来说团队更倾向于使用Redux-Thunk,我觉得这个问题的语法比较复杂。考虑到我的大多数动作创建者只进行 axios 调用(承诺),我需要评估这两个框架的建议。我看到很多关于 Redux-thunk 的讨论 。我了解 thunk 的用处。 .但是我需要更多的说明来评估 Redux-Promise 和 Redux-Thunk 仅用于 Promises 时的组合。在这种情况下哪个中间件更好,为什么?使用 Redux-Thunk 比使用 Redux-Promise 有什么优势?或者有none?

Redux Promise 可以方便地分派三个动作(请求、成功、失败),而无需手动编写该代码。

当您将一个动作创建者表示为等待另一个动作创建者时,Redux Thunk 便于异步数据流。它还可以让您读取有条件派遣和早期救助的当前状态。

您可以将它们一起使用,也可以特别使用任何一个。我建议从 Redux Thunk 开始,因为它提供了更多的控制并且更通用。在你让它工作之后,你可以考虑添加 Redux Promise 来删除一些与调度三种动作相关的样板代码。如果您发现它对您没有多大帮助,请将其删除。另一方面,如果您注意到所有的 thunk 动作创建者都只是发送一个 promise,您可以移除 Redux Thunk。

如果这仍然令人困惑,我建议您只使用 Redux Thunk,直到您对中间件的工作方式更加熟悉为止。