我正在使用的应用程序有很多供应商,每个供应商都包含一系列产品。我们目前正在寻找大约20个供应商,目前(所有供应商)共有4k个产品,尽管这很容易变得更大。
我们的订购视图在页面侧面显示供应商列表,然后单击供应商,然后显示该供应商的产品列表。列表中的每个项目都包含该特定产品的金额字段。本质上,整个表单需要4k字段,每个产品一个字段。
我的问题是使用redux-form
时控制这么多字段的最佳方法是什么?
第一个解决方案可能是使用redux-form的<FieldArray />
并具有如下形式的表单结构:
{
suppliers: [
{
id: 'supplier0',
notes: 'Some notes for this supplier',
products: [
{
id: 'product0',
amount: 10
}
]
}
]
}
但是,如果我没有记错的话,这将需要使用所有4k产品的条目来初始化表单(因为在使用表单时不会动态添加或删除它们)。这也意味着对表单进行的任何形式的处理(例如提交)都需要循环遍历所有产品以检查它们是否具有金额值。
或者我一直在想我可以使用像这样的索引结构:
{
suppliers: {
{{supplierId}}: {
notes: 'Some notes for this supplier',
products: {
{{productId}}: {
amount: 10
}
}
}
}
}
然后,对于每个渲染的行,我只需使用供应商和产品ID构造数量字段名称:
<Field name={`suppliers.${supplierId}.products.${productId}.amount`} />
这样可以省去进行任何初始化的步骤,从而使表单状态更易于管理。
我在其他任何地方都没有真正遇到过这个问题,并且在redux-form
的文档中也看不到这种用例的任何示例。第二种索引方法是否有不利之处?我绝对应该使用FieldArray
代替的任何理由吗?