我有一个组件,其中包含一个用 react-final-form 制作的表单;所有输入字段都可以正常工作,就像在我的所有其他表单中一样,但是,我有一个自定义输入,我需要更改组件的状态,然后在 handleSubmit 中我将该值添加到表单数据中。这基本上是一个自定义输入。
但是,当我更新组件的状态时,只要状态更新,它就会重置其他输入字段中的任何用户输入。为什么要这样做,或者我在这里缺少什么以便更改组件状态不会重置其他输入中的值?我知道我以前见过它工作,但我无法区分。
这是我的表格的简化版本
const MyForm = () => {
const [period,setPeriod] = useState(new Date())
const handleSubmit = (data) => {
console.log(data)
}
const handleSelectPeriod = (month) =>{
setPeriod(month)
}
const initialValues = {
period,
package_id:context.inheritData.package_id,
balance:0.00
}
return (
<div>
<Form
onSubmit={handleSubmit}
validate={values => validate(values, schema())}
initialValues={initialValues}
>
{({handleSubmit})=>(
<div>
<form onSubmit={handleSubmit}>
<div className={'form-group'}>
<label htmlFor="name">Name/label>
<InputField name={'name'} />
</div>
<div className={'form-group'}>
<label htmlFor="slug">Slug</label>
<InputField name={'slug'} />
</div>
<div className={'form-group'}>
<MonthYearContainer selectMonth={handleSelectPeriod}/>
</div>
<div className={'form-group'}>
<label htmlFor="balance">Balance Inicial</label>
<InputField name='balance' type={'number'} step={0.01}/>
</div>
<FormButton isLoading={loading} text={'Crear'} textLoading={'Creando Condominio'}/>
</form>
</div>
)}
</Form>
</div>
)
}
预期的行为是让用户更改组件状态而不重置他们已经在其他字段中输入的任何内容。