2016-11-18 67 views
3

方案:我有一個資產清單<AssetList />。隨着用戶向下滾動到列表的底部,我的應用程序將懶惰地加載剩餘的資產。因此,取決於用戶向下滾動多遠,可以加載數百個甚至數千個資產。Redux:每條記錄可能有數千條記錄的一種格式

問題:點擊每個資產<Asset />將擴展它,並允許用戶編輯其字段(名稱,內容,..)過渡應該是無縫的。正如我所看到的,每項資產都必須是一種形式。我的顧慮是1)方法和2)性能

方法:我在這裏採用的方法是使用每個記錄使用redux-form的一種格式。除此之外還有什麼替代方案可以實現通量架構?這是個常見的問題嗎?

這裏的另一個可能的方法是修改狀態樹來,並且每個整個資產列表中的一個形式:

{ 
    assets: {..}, 
    assetForm: {..} 
} 

而且點擊的<Asset />反而會觸發相應的動作,這將級聯到減速機,其將更新assetForm狀態。

性能:我最大的遠遠的關注。我不介意頁面上的大量表單,但是我擔心的是,每個表單都與一個Redux存儲區縮減器相關聯(或者至少這是我認爲utils如redux-form所做的)。換句話說,潛在的成千上萬的減速器是否會影響性能?

我很抱歉,如果我的假設是不正確的。我是比較新的反應&減少。

回答

5

我想你提出了一個相當常見的用例的有效問題。爲了解決你的一些問題,我認爲你的方法是有效的,除非你可能想稍微調整一下,以避免創建這麼多的表單。我沒有親自使用redux-form,所以我會讓那些有更多經驗的人添加更多的答案或評論,但是從更抽象的角度來看,當用戶點擊Asset時應該只有一個表格,因此,我只建議在單擊Asset時渲染表單。這樣您將只有用戶需要的表格數量,大大低於每個Asset

至於商店的管理,如果你是有沒有具體的redux-form體驗每Asset初始化的形式,再次,不能你確保你有一個相當簡單的狀態結構,只有當窗體初始化追加到它?也就是說,考慮一個名爲assetForms的狀態變量,它是一個對象,其中每個鍵都是Asset的唯一ID,並且該值是具有表單數據的另一個對象。這樣,再次,您只保留與Assets一樣多的狀態對象。

希望清除一些混淆,但如果您需要更多細節,請隨時擴展您的問題。

+0

謝謝@ZekeDroid。我實際上考慮過最初每個整個資產列表都有一個表格。我剛剛更新了更具體的問題。我認爲你的方法是健全的。至於你提到''assetForms''的第二部分 - 由redux-form管理。你提供一個表單鍵,它可能是你的資產ID,它保存表單狀態,字典樣式。 –

+1

啊我明白了,你的表格到底有多複雜?我幾乎會建議你自己管理這些領域,因爲這會使它更容易處理。您可以讓每個資產都使用ID和'onChange'的回調進行初始化,以便父母可以在此回調中觸發類似'{type:'ASSET_CHANGED',assetID:'some_id',fieldsChanged:{name:' foo',描述:'bar'}}'。這樣,你絕對沒有額外的信息,再次,只有用戶試圖改變它們的狀態字段。 – ZekeDroid

+0

只要我遵循。首先,您會在整個資產清單中推薦一種形式? –