我有一个表单,根据另一个字段的值选择显示/隐藏某些字段。有没有什么方法可以只验证可见字段,因为它现在注册页面上的所有可用字段并生成错误,即使它们没有显示。
答案 0 :(得分:0)
事实
我要说的是发生在redux-form 7.4.2
当Redux-Form表单中的字段“消失”时,将分派动作@@redux-form/UNREGISTER_FIELD
。
当Redux-Form形式的字段“出现”时,将启动@@redux-form/REGISTER_FIELD
。
行为
想象一下,第一次呈现表单时该字段不存在,因此该字段将不会出现在商店的registeredFields
中。
registeredFields {
someOtherField: {name: 'someOtherField', type : 'Field', count: 1}
}
现在,您执行触发表单重新呈现的操作,该字段“出现”,redux表单调度@@redux-form/REGISTER_FIELD
。现在,如果您查看商店,您将在registerFields
下找到您的字段,如下所示:
registeredFields {
someOtherField: {name: 'someOtherField', type : 'Field', count: 1}
conditionalField: {name: 'conditionalField', type : 'Field, count: 1}
}
如果您做某事(单击一个复选框)导致该字段从表单中“消失”会发生什么?
redux-form将分派@@redux-form/UNREGISTER_FIELD
,这是您的商店随后的样子:
registeredFields {
someOtherField: {name: 'someOtherField', type : 'Field', count: 1}
conditionalField: {name: 'conditionalField', type : 'Field, count: 0}
}
请注意,唯一更改的是count
。
您可以使用registeredFields
通过connect
将UNREGISTER_FIELD
连接到表单来判断该字段是否可见。
奇怪的是,当您“手动”分派dispatch
字段操作(redux工具或带有registeredFields {
someOtherField: {name: 'someOtherField', type : 'Field', count: 1}
conditionalField: {name: 'conditionalField', type : 'Field, count: 1}
}
的代码)时,整个密钥会像这样从商店中删除:
之前:
UNREGISTER_FIELD
“手动”调度 registeredFields {
someOtherField: {name: 'someOtherField', type : 'Field', count: 1}
}
UserControl
我认为这是一个错误。我认为它应该具有相同的行为。我要在GitHub上提出一个问题。