如何在页面上多次嵌入相同的redux-form?

时间:2016-05-26 09:16:20

标签: reactjs redux redux-form

我在尝试在一个页面上嵌入多个表单时遇到问题。我注意到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);

如何添加表单以使它们彼此独立?

1 个答案:

答案 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!