我有一个动作,减速器和一些资源的服务。
假设在这种情况下,资源是购物车,用户可以从中获得多个购物车。
我有以下方法,getCartInformation
,getCarts
,getCartCount
。
我有以下API,fetchCartInformation
,fetchCarts
,fetchCartCount
。getCarts
返回getCartInformation
和getCartCount
所需的购物车ID
问题是,当您调用fetchCarts
或getCartInformation
作为副作用时,如何避免对API进行多次getCartCount
调用
您是否可以使用fromCache
标志扩展API库,以便fetch***
具有该选项。
您是否会在API库中设置一个“查询端点时调用”的计数器,然后重新触发函数的调用者?
您是否要对操作进行检查,以查看getState
是否已经拥有购物车,如果没有,请查询并重新触发该功能(对于慢速端点,可能同时有2个或更多并发调用)?
现在让我们假设多个组件可能触发getCartCount
调用,有时您想在该组件出现在页面中时调用端点,并且有时在应用程序初始化中都调用了这些端点,因为所有组件都已添加。在这种情况下,这将多次调用端点getCarts
和getCartCount
。
是否存在某种“ redux-way”来发现在一个方法尚未解决之前对它的多次调用?
您会在getCarts
动作上设置呼叫计数器吗?
您是否要使操作getCartCount
取决于getCarts
承诺响应,并检查getCarts
动作?
我知道这是一个复杂而漫长的问题,但是如果需要更多或更少的细节,请告诉我。
最佳答案
我不明白为什么每次呼叫getCarts
时都要呼叫getCartInformation
。常见的用例是:(1)用户查看卡片列表(通过getCards),以及(2)用户单击其中之一并查看卡片信息(通过具有选定卡片ID的getCartInformation)。看起来您不需要再调用一次getCards了。
通常将卡列表分为几页。因此,每次调用start
时,总是会有offset
,total
,getCards
字段作为服务字段,因此根本不需要getCartsCount
。
当我应用任何类型的缓存时,对Redux来说透明的是合理的,即Redux操作以通常的方式执行API调用,并且API层(在后台)决定是发送真实的ajax调用还是返回数据从缓存。