2017-07-30 61 views
1

假設我有Redux存儲。其狀態有userCoordinates場 與用戶的當前座標:異步維護Redux中的狀態完整性

{ 
    userCoordinates: [3.1457, 2.1728], 
    ... 
} 

然後假設店裏有20多個字段與依賴於 座標數據:

{ 
    ... 
    nearbyFriends: ["Bob", "Jimmy"], 
    nearbyShops: ["Point & Click tools", "Bobby Ray's"], 
    address: "42 Enth Street, Townsville, Countryland", 
    weather: "Cloudy", 
    ... 
} 

值在所有這些領域的通過HTTP從 加載各種服務,每個字段有一個單獨的請求。

現在假設用戶的地理位置更新和行動派出的是 改變的userCoordinates值:

dispatch(updateCoords([1.6180, 1.4142])); 

現在userCoordinates有新的座標和所有20個領域有無效數據。

  1. 如果目標只是保持所有領域的「最終」有效,我在哪裏做,以獲取新的數據的請求?
  2. 如果我使用React-Redux,並且有很多組件使用這些字段的許多不同組合,並且一些字段由多個組件使用並且一些字段根本不使用,那麼方法會如何更改?

回答

0

根據結構的不同,我會做兩件事之一。

1:比較你的減速器中的狀態。如果狀態中的用戶座標發生了變化,您可以在商店中添加一些東西,例如updateNeeded: true,然後在您要加載其他數據的位置隨時進行檢查,以便如果updateNeeded爲true,則啓動ajax調用以獲取新的來自服務器的數據。

2:如果設置正確,可以使用componentWillReceiveProps來比較道具。如果userCoordinates發生更改,請發送操作以獲取其他數據字段。

當然,這將是更容易,如果你可以只得到所有的數據和一個電話...

+0

我已經嘗試過這種做法,這不是在我的經驗可擴展性。想象一下,有40個組件,並在代碼中編寫並維護這些prop/mount鉤子!更不用說處理重複的請求。在那個時候,我會比標準的React更好。 –