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

时间:2016-05-01 14:26:32

标签: reactjs redux redux-thunk axios redux-promise

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

在我的应用程序中,动作创建者主要对我的后端apis进行异步axios [ajax]调用。将Redux-Promise注入中间件可以解决异步数据流的问题。

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

一般来说,团队更倾向于使用Redux-Thunk,我觉得这个问题的语法更复杂。考虑到我的大多数动作创建者只进行了axios调用(promises),我需要在评估这两个框架时提出建议。我看过很多关于Redux-thunk here的讨论。我明白thunk是如何有用的。 。但是当我只使用Promises时,我需要更多的澄清来评估Redux-Promise和Redux-Thunk。哪种中间件在这种情况下更好?为什么?使用Redux-Thunk而不是Redux-Promise可以获得哪些优势?或者没有?

1 个答案:

答案 0 :(得分:23)

Redux Promise方便派遣三个动作(请求,成功,失败)而无需手动编写代码。

当您将一个动作创建者表示为等待另一个动作创建者时,

Redux Thunk可以方便异步数据流。它还允许您读取条件派遣和早期救助的当前状态。

您可以一起使用它们,也可以特别使用任何一种。我建议从Redux Thunk开始,因为它提供更多控制并且更通用。在使用它之后,您可以考虑添加 Redux Promise来删除一些与调度三种操作相关的样板代码。如果您发现它不会对您造成太大影响,请将其删除。另一方面,如果您注意到所有thunk动作创建者只发送一个承诺,您可以改为删除Redux Thunk。

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