2015-09-05 46 views
0

假設我有一個顯示一些用戶詳細信息的UserComponent。使用React + Flux + Immutable體系結構,我可以告訴它監聽UserStore更改,以便它可以自行更新。收聽商店的反應列表和商品組件

現在,如果我想顯示用戶列表,我可能想要重用此組件並在UserListComponent中使用它。這還需要監聽UserStore,以便在添加/刪除項目時添加/刪除項目。

如果我有100個用戶的列表,這將導致101個組件正在監聽UserStore,並且可以說100個這些(這些項目)不需要是因爲該列表正在代表他們這樣做。我應該採取什麼方法來設計這種情況?或者這不是我需要擔心的事情?

我對React還很新,而且我一直關注的示例沒有對此進行說明 - 例如TodoMVC有TodoItems,它們不聽商店,依靠列表來完成所以代表他們。但是,這可以防止它們在列表之外使用,這似乎有點限制。

回答

1

您可以將狀態置於共同的祖先/所有者組件(您的列表)中,並且每個子組件(用戶詳細信息組件)將從該共同祖先中派生/借用其狀態 - 如prop。 爲了獲得良好的性能,您可以使用Immutable與componentShouldUpdate函數一致。

+0

謝謝。我已經在使用Immutables。我不確定我是否按照你的回覆。如果我希望我的UserComponent作爲顯示用戶的獨立組件(例如)並保持最新,那麼我需要該組件掛接到商店事件中,對吧?同樣,如果我需要它們的列表,那麼我的UserListComponent將需要偵聽以添加或刪除項目 - 但是這也有意義的副作用,我不需要我的UserInfoComponent作爲名單將爲我做。 – Barguast

+0

這是我可以啓用/禁用作爲道具的東西嗎?例如在我的列表中,或爲獨立?不知道這是否是一種好方法... – Barguast

+0

簡短回答:不,您的UserComponent不需要掛入存儲事件,如果它的父(列表)是一個維護狀態。視圖由'React.render'運行改變,這是由狀態改變觸發的;道具被傳播並重新計算觀點。 –