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

Redux: one form per record for potentially thousands of records

本文关键字:记录 可能有 千条 表单 Redux 一个      更新时间:2023-09-26

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

问题:单击每个资产<Asset />将扩展它,并允许用户编辑其字段(名称,内容,…)过渡应该是无缝的。在我看来,每个资产都需要是一个表单。我关心的是1)方法和2)性能

方法:我在这里采取的方法是使用redux-form的每个记录使用一种形式。是否有其他替代方案可以强制执行flux架构?这是一个常见的问题吗?

这里的另一种可能的方法是这样修改状态树,每个资产列表有一个表单:

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

点击<Asset />将触发相应的动作,该动作将级联到减速机,减速机将更新assetForm状态。

性能:目前为止我最关心的。我不介意页面上有大量的表单,但我担心的是每个表单都与一个redux存储简化程序相关联(或者至少这是我认为utils,如redux-form所做的)。换句话说,可能有数千个reducer会影响性能吗?

如果我的假设不正确,我道歉。我的反应相对较新。回来的。

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

对于存储的管理,如果你必须初始化每个Asset的窗体,同样没有特定的redux-form经验,你不能确保你有一个相当简单的状态结构,只在窗体被初始化时追加到它?也就是说,考虑一个名为assetForms的状态变量,它是一个对象,其中每个键是Asset的唯一id,值是具有表单数据的另一个对象。通过这种方式,您只保留尽可能多的状态对象(Assets)。

希望这能澄清一些困惑,但如果你需要更多的细节,请随意扩展你的问题。