在React钩子中同时进行异步API调用

时间:2019-10-15 23:20:12

标签: reactjs axios react-hooks declarative

我已经在我的React项目中使用钩子一段时间了,并且已经开发了一个钩子来获取数据,这与我使用的许多其他钩子类似。

const [callApi, isLoading, result, errrors] = useData();

callApi是一个可以通过数据和axios配置调用的函数,它可以进行API调用并更新其他变量。我在useEffect()调用中处理结果,该调用设置接收新数据时的状态。这很简单。

问题在于,尽管它一次可以很好地处理一个请求,但是它只有一个isLoading状态和一个结果状态,如果在上一次调用完成之前调用它,那就不好了。假设我的用户向他的朋友发送了一条消息,并且用户界面在每个姓名旁边都显示了一个带有“发送消息”按钮的朋友列表,他们可以单击3个按钮并快速连续拨打3个电话。然后我们有了一个竞争条件,看看哪个首先设置结果。

我习惯使用promise进行命令式编程,在我的旧Angular代码中,单击按钮会调用事件处理程序,该处理程序将调用api和promise。然后,then()将处理结果。这可能会同时发生100次,并且每个问题都会分开解决,然后更新UI。

所以我的问题是,是否有一种惯用的方法使用react钩子声明性地执行此操作,以便我可以触发多个请求并分别处理加载/结果/错误?

0 个答案:

没有答案