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。我建议你把它分开,这样就不会有太多的逻辑(分开考虑)。它将更易于维护