Redux:每条记录一个表格,可能有数千条记录

时间:2016-11-18 16:15:20

标签: javascript forms reactjs redux redux-form

场景:我有一个资产列表<AssetList />。当用户向下滚动到列表底部时,我的应用程序将延迟加载其余资产。因此,根据用户向下滚动的距离,可以加载数百个(如果不是数千个)资产。

问题:点击每个资产<Asset />会展开它并允许用户编辑其字段(名称,内容,等)。转换应该是无缝的。在我看来,每个资产都需要是一种形式。我的顾虑是1)方法和2)表现

方法:我在这里采用的方法是使用redux-form为每条记录使用一个表单。有没有其他替代方案可以强制执行通量架构?这是一个常见的问题吗?

此处另一种可能的方法是修改状态树,并在整个资产列表中包含一个表单:

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

然后单击<Asset />将触发相应的操作,该操作将级联到将更新assetForm状态的reducer。

效果:到目前为止我最关心的问题。我不介意页面上的大量表单,但我担心的是每个表单都与redux存储缩减器相关联(或者至少我认为像redux-form这样的工具)。换句话说,可能有成千上万的减速器会影响性能吗?

如果我的假设不正确,我道歉。我是一个相对较新的反应和终极版。

1 个答案:

答案 0 :(得分:5)

我认为你对一个相当常见的用例提出了有效的担忧。为了解决您的一些问题,我认为您的方法是有效的,除非您可能需要稍微调整一下以避免创建这么多表单。我没有亲自使用redux-form所以我会让那些有更多经验的人添加更多的答案或评论,但从更抽象的角度来看,你应该只有一个表单,当用户点击时因此,我建议仅在点击Asset时呈现表单。Asset这样,您将只有用户需要的表单数量,每Asset个不到一个。

至于商店的管理,如果您必须按照Asset初始化表单,再次没有特定的redux-form经验,您无法确保您拥有相当简单的州结构和只在表单初始化时附加到它?也就是说,考虑一个名为assetForms的状态var,它是一个对象,其中每个键是Asset的唯一ID,值是另一个具有表单数据的对象。这样,您只能保留与Assets一样多的状态对象。

希望能够消除一些混乱,但如果您需要更多细节,请随时扩展您的问题。