我在尝试在一个页面上嵌入多个表单时遇到问题。我注意到configForm
执行一次,即使页面上有多个表单,这就是我无法动态生成不同表单名称的原因。
Screenshot showing multiple text fields bound together
function configForm(){
const uuid = UUID.generate();
const config = {
form:`AddCardForm_${uuid}`,
fields:['text'],
validate:validate
}
return config;
}
export default reduxForm(configForm(), mapStateToProps, {togglePanelEditMode, addCardToPanel})(CardFormContainer);
如何添加表单以使它们彼此独立?
答案 0 :(得分:54)
有两种方法可以在页面上多次嵌入相同的表单。
<强> 1。使用formKey
(Redux表格5)
formKey
是使用redux-form@5
(或以下)时执行此操作的官方方式。您必须从父级传递密钥以标识表单:
panels.map(panel =>
<PanelForm key={panel.uuid} formKey={panel.uuid} initialValues={panel} />
^^^^^^^
declare the form key
)
您的表单定义为:
reduxForm({form: "AddCardForm", fields: ["text"], validate})
但是此模式已从redux-form@6
中删除。
<强> 2。使用唯一的form
名称(Redux Form 5及以上版本)
以下模式是自Redux表单6以来识别表单的推荐方法。它与以前的版本完全兼容。
panels.map(panel =>
<PanelForm key={panel.uuid} form={`AddCardForm_${panel.uuid}`} initialValues={panel} />
^^^^
declare the form identifier
)
您的表单定义为:
reduxForm({fields: ["text"], validate})
// No `form` config parameter here!