Formik 重置错误

Formik reset errors

我正在尝试重置表单中的所有错误。

我尝试使用 setErrorssetStatus,其中 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>