Formik 重置错误
Formik reset errors
我正在尝试重置表单中的所有错误。
我尝试使用 setErrors
和 setStatus
,其中 none 有效。 Formik 状态中的错误未被清除。
setErrors({errors: {}})
和
setStatus({ errors: {}});
以上的 None 有效。
resetForm()
清除所有错误,但表单值也被重置,这是我不想要的。任何仅清除错误对象的指针?
在使用setErrors
时,只需传递您想要的errors
对象的状态。因此,要重置所有错误,请传递一个空对象 ({}
)。
setErrors({})
Codesandbox demo here.
已接受的答案对我不起作用。
有效的是:
formik.setTouched({}, false);
您还可以使用 form.setFieldTouched (fieldName, false, false)
重置单个字段。
这是一个示例,其中选中复选框将清除 date
字段中的值和错误。
<Field name={'expiry'}>
{({
field,
form,
}) => (
<Checkbox
{...field}
onChange={(e) => {
field.onChange(e)
form.setFieldValue('date', '')
form.setFieldTouched('date', false, false)
}}
/>
)}
</Field>
我正在尝试重置表单中的所有错误。
我尝试使用 setErrors
和 setStatus
,其中 none 有效。 Formik 状态中的错误未被清除。
setErrors({errors: {}})
和
setStatus({ errors: {}});
以上的 None 有效。
resetForm()
清除所有错误,但表单值也被重置,这是我不想要的。任何仅清除错误对象的指针?
在使用setErrors
时,只需传递您想要的errors
对象的状态。因此,要重置所有错误,请传递一个空对象 ({}
)。
setErrors({})
Codesandbox demo here.
已接受的答案对我不起作用。
有效的是:
formik.setTouched({}, false);
您还可以使用 form.setFieldTouched (fieldName, false, false)
重置单个字段。
这是一个示例,其中选中复选框将清除 date
字段中的值和错误。
<Field name={'expiry'}>
{({
field,
form,
}) => (
<Checkbox
{...field}
onChange={(e) => {
field.onChange(e)
form.setFieldValue('date', '')
form.setFieldTouched('date', false, false)
}}
/>
)}
</Field>