Reactjs 如何仅在表单以最终表单初始化后订阅字段更改

Reactjs 如何仅在表单以最终表单初始化后订阅字段更改,reactjs,react-final-form,final-form,Reactjs,React Final Form,Final Form,我有一个react final表单表单,它需要从状态初始化。当其中一个字段更改时,我希望将表单重置为初始(空)值。因此,我使用字段状态的订阅,如果更改,我使用OnChange重置表单: <Field name="option" subscription={{ dirty: true }}> {({ input: { onChange } }) => ( <OnChange name="option"> {value => {

我有一个
react final表单
表单,它需要从状态初始化。当其中一个字段更改时,我希望将表单重置为初始(空)值。因此,我使用字段状态的订阅,如果更改,我使用
OnChange
重置表单:

<Field name="option" subscription={{ dirty: true }}>
  {({ input: { onChange } }) => (
    <OnChange name="option">
      {value => {
        form.reset({
          ...initialValues,
          option: value
        });
      }}
    </OnChange>
  )}
</Field>

{({input:{onChange}}})=>(
{value=>{
表单重置({
…初始值,
选项:值
});
}}
)}
但是它不起作用,因为表单在初始化后立即被重置。有没有办法把这两件事分开?这样我才能在用户修改表单字段时重置表单


这是指向my.

的链接,它不起作用,因为
组件至少需要第一次呈现,因为它的目的是呈现字段UI而不是钩住回调。我建议您改用
,因为它用于挂接回调,即使对于特定字段可能很难

 <FormSpy
    subscription={{ dirtyFields: true }}
    onChange={props => {
        if (props.dirtyFields.option) {
        form.reset({
            ...initialValues,
            option:
            form.getFieldState("option") &&
            form.getFieldState("option").value
        });
        }
    }}
/>
{
if(props.dirtyFields.option){
表单重置({
…初始值,
选项:
form.getFieldState(“选项”)&&
form.getFieldState(“选项”).value
});
}
}}
/>


它不起作用,因为组件至少需要第一次呈现,因为它的目的是呈现字段UI而不是钩住回调。我建议您改用
,因为它用于挂接回调,即使对于特定字段可能很难

 <FormSpy
    subscription={{ dirtyFields: true }}
    onChange={props => {
        if (props.dirtyFields.option) {
        form.reset({
            ...initialValues,
            option:
            form.getFieldState("option") &&
            form.getFieldState("option").value
        });
        }
    }}
/>
{
if(props.dirtyFields.option){
表单重置({
…初始值,
选项:
form.getFieldState(“选项”)&&
form.getFieldState(“选项”).value
});
}
}}
/>


非常感谢您的回复!我已经有一个FormSpy组件,它订阅了带有onChange函数的值。我可以添加另一个FormSpy组件吗?或者我应该只使用一个FormSpy来满足这两种需要吗?@jupiteror您可以添加另一个FormSpy。我建议你把它分开,这样就不会有太多的逻辑(分开考虑)。它会更易于维护非常感谢您的回复!我已经有一个FormSpy组件,它订阅了带有onChange函数的值。我可以添加另一个FormSpy组件吗?或者我应该只使用一个FormSpy来满足这两种需要吗?@jupiteror您可以添加另一个FormSpy。我建议你把它分开,这样就不会有太多的逻辑(分开考虑)。它将更易于维护