2016-10-07 46 views
0

比方說,我有如何延遲加載Redux應用程序中的數據?

IClientState: { 
    firstName: string, 
    lastName: string, 
    details: IClientDetailsState 
} 

,讓我們進一步假設,從服務中檢索firstNamelastName是便宜,所以一來就在一個魔掃描所有客戶端加載到父狀態

xxxxState: { 
    clients: IClientState[], 
    ... 
} 

但是,對於任何一個客戶端檢索details都非常昂貴,例如,它們並不是完全需要用於列表顯示。

我該如何解決這個問題?我正在考慮將loadingloaded屬性添加到IClientDetailsState並檢查需要此數據的組件中的那些屬性;如果兩個屬性都應該產生false,那麼該組件將觸發動作以載入細節。

事情是,這個檢查從組件的角度看是相當複雜的,對我來說這是一個警告信號,它不應該這樣做。

所以是的,我該如何處理這種適當的方式?

回答

1

我不認爲這個問題與redux有關,相反我認爲你需要重新考慮你的狀態。

我想通過引入一些新的類型,例如解決問題:

IClientBase: { 
    firstName: string, 
    lastName: string 
} 

IClientListItem extends IClientBase: { 
    index: integer 
} 

IClientList{ 
    items: IClientListItem[] 
} 

IClient extends IClientBase{ 
    details: IClientDetails 
} 

現在你可以收集廉價IClientListItem列表,當用戶選擇一個項目,你可以將其轉換爲IClient與膨脹適當的客戶細節。