【发布时间】:2015-10-15 19:21:39
【问题描述】:
假设我有两个控制器视图 - ItemsContainer、Item 和一个存储项目列表的商店 ItemsStore。当项目列表由于某些操作而发生变化时,商店会发出变化,并且两个视图都从 ItemsStore 获取它们的状态。
ItemsContainer 调用getItems 并重新呈现项目列表。 Item 使用其 id 调用 getItem 方法,并重新呈现自己。
现在,让我在屏幕上显示多个 ItemsContainer 的最简单方法是什么?
我可以重写ItemsStore,以便将其数据存储在映射id -> storeData 中,但这意味着每个ItemsStore 方法都需要另一个参数storeId 也传递给它。 getItems() 变成 getItems(storeId),getItem(itemId) 变成 getItem(storeId, itemId) 看起来太丑了。操作还需要传递storeId。
据我了解,Another way 正在创建一个商店,它将管理ItemsStore 的数据并重新初始化它,调用STORE_UPDATE 操作。
这种方法的问题是,如果我们有两个(A 和 B)ItemsContainer,并且活动容器是 A,那么 ItemsStore 包含在 A 中呈现的项目,容器 B 仍然会监听到ItemsStore 更改。我可以在ItemsContainer.onChange 方法中添加一个检查它是否是活动容器,但我不确定应该这样做。
【问题讨论】:
标签: javascript reactjs reactjs-flux flux