29

我在尝试在一页上嵌入多个表单时遇到问题。我注意到configForm执行一次,即使页面上有多个表单,这就是为什么我不能动态生成不同的表单名称。

显示绑定在一起的多个文本字段的屏幕截图

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);

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

4

1 回答 1

60

有两种方法可以在页面上多次嵌入同一个表单。

1.使用formKey(Redux Form 5)

formKeyredux-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 Form 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!
于 2016-05-26T14:41:01.167 回答