2017-05-27 40 views
1

我想我的正常化狀態,並不能完全弄清楚如何處理局部&完整的資源,即是否應該他們共享狀態的同一片或退居自己的片。歸國家與部分和完全資源裝載

多一點信息:

當我做出的things列表的請求,服務器與泛音的列表進行響應。

[ { id: 1, name: "thing1"}, 
    { id: 2, name: "thing2"}, 
    ... 
    { id: N, name: "thingN"} ] 

當我做了一個thing的請求時,服務器用一個更完整的對象響應。

{ 
    id: 1, 
    name: "thing1", 
    img_url: "url1", 
    description: "description1", 
    ... and more fields 
} 

部分列表和詳細信息都需要同時存在。

所以應該將這些部分和完全things全部在狀態的同一片?

如果有什麼是管理給定thing是否已經被部分或完全獲取最佳實踐?

感謝您的幫助!

回答

0

什麼是獲取單個項目的目的是什麼?大概顯示它?爲什麼不建立你的狀態,如:

this.state = { 
    allThings: [], 
    singleThing: {} 
}; 

並填充它相應。

0

你可以去這幾個方面:

  1. 有一個像這樣一個不完整的對象:

    { 
        id: 1, 
        name: 'thing1', 
        detail: null //this would be a JS object when populated 
    } 
    

    你會如何使用:在使用的詳細視圖組件,您檢查狀態爲空。這意味着如果將來需要多個細節,則可以延遲加載細節,並且如果需要,不必再次檢索它們。但是,如果信息需要更新,這不是很好(你必須解決null和最後的檢索日期,對於創建陳舊的數據可能是有風險的)。

  2. 管理您狀態下,兩個作爲完全不同的節點,其中詳細視圖或者是一個陣列或只是單個對象。如果您希望始終更新生命週期事件中的對象(例如,在組件裝載上始終要刷新數據),則此方法會更好。

我個人的偏好是#1 - 我用火力地堡了很多,這個作品真的很好的實時數據庫處理數據時應該更新,然後讓他們在狀態意味着我可以顯示數據超如果預先加載,則對用戶快速。