簡體   English   中英

Redux API 並發操作的最佳實踐

[英]Best practice for Redux API concurrent actions

我有一些資源的動作、減速器和服務。

在這種情況下,讓我們假設資源是一個購物車,用戶可以從中擁有多個。

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

getCarts返回getCartInformationgetCartCount所需的購物車 ID

問題是,當您調用getCartInformationgetCartCount作為副作用時,您將如何避免對 API 進行多次fetchCarts調用

  • 您是否會使用fromCache標志擴展 API 庫,以便fetch***可以使用該選項。
  • 您是否會在“查詢端點時調用”的 API 庫上設置一個計數器,然后重新觸發函數的調用者?
  • 您是否會在操作上添加檢查以查看getState是否已經有購物車,如果沒有查詢並重新觸發該功能(對於慢速端點,可能同時有 2 個或更多並發調用)?

現在讓我們假設多個組件可能會觸發getCartCount調用,有時您想在組件出現在頁面中時調用端點,有時它們都在應用程序的初始化中被調用,因為組件都被添加了。 在這種情況下,這將getCarts調用端點getCartsgetCartCount

  • 是否有某種“redux-way”來捕捉在一個方法已經解決之前多次調用它?
  • 你會在getCarts操作上設置一個調用計數器嗎?
  • 您會讓getCartCount操作依賴於getCarts承諾響應,並檢查getCarts操作嗎?

我知道這是一個有點復雜和冗長的問題,但如果需要更多或更少的細節,請告訴我。

  1. 我不明白為什么每次調用getCarts時都應該調用getCartInformation 常見用例是:(1)用戶查看卡片列表(通過 getCards)和(2)用戶單擊其中一張並查看卡片信息(通過 getCartInformation 和所選卡片的 id)。 看起來您不需要再調用一次 getCards。

  2. 通常將卡片列表分成幾頁。 因此,在每次getCards調用時,您總是將startoffsettotal字段作為服務字段,因此您根本不需要getCartsCount

  3. 當我應用任何類型的緩存時,讓 Redux 透明對我來說是合理的,即 Redux action 以通常的方式執行 API 調用,API 層決定(在幕后)它應該發送真正的 ajax 調用還是應該返回數據從緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM