我有一个动作,减速器和一些资源的服务。

假设在这种情况下,资源是购物车,用户可以从中获得多个购物车。

我有以下方法,getCartInformationgetCartsgetCartCount
我有以下API,fetchCartInformationfetchCartsfetchCartCount

getCarts返回getCartInformationgetCartCount所需的购物车ID

问题是,当您调用fetchCartsgetCartInformation作为副作用时,如何避免对API进行多次getCartCount调用


您是否可以使用fromCache标志扩展API库,以便fetch***具有该选项。
您是否会在API库中设置一个“查询端点时调用”的计数器,然后重新触发函数的调用者?
您是否要对操作进行检查,以查看getState是否已经拥有购物车,如果没有,请查询并重新触发该功能(对于慢速端点,可能同时有2个或更多并发调用)?


现在让我们假设多个组件可能触发getCartCount调用,有时您想在该组件出现在页面中时调用端点,并且有时在应用程序初始化中都调用了这些端点,因为所有组件都已添加。在这种情况下,这将多次调用端点getCartsgetCartCount


是否存在某种“ redux-way”来发现在一个方法尚未解决之前对它的多次调用?
您会在getCarts动作上设置呼叫计数器吗?
您是否要使操作getCartCount取决于getCarts承诺响应,并检查getCarts动作?


我知道这是一个复杂而漫长的问题,但是如果需要更多或更少的细节,请告诉我。

最佳答案

我不明白为什么每次呼叫getCarts时都要呼叫getCartInformation。常见的用例是:(1)用户查看卡片列表(通过getCards),以及(2)用户单击其中之一并查看卡片信息(通过具有选定卡片ID的getCartInformation)。看起来您不需要再调用一次getCards了。
通常将卡列表分为几页。因此,每次调用start时,总是会有offsettotalgetCards字段作为服务字段,因此根本不需要getCartsCount
当我应用任何类型的缓存时,对Redux来说透明的是合理的,即Redux操作以通常的方式执行API调用,并且API层(在后台)决定是发送真实的ajax调用还是返回数据从缓存。

10-08 15:56