Formik 重置错误

pha*_*der 8 reactjs formik

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

我尝试使用setErrorsand setStatus,这些都不起作用。Formik 状态中的错误未清除。

setErrors({errors: {}})
Run Code Online (Sandbox Code Playgroud)

setStatus({ errors: {}});
Run Code Online (Sandbox Code Playgroud)

以上都没有奏效。

resetForm()清除所有错误,但表单值也被重置,这是我不想要的。任何只清除错误对象的指针?

Dan*_*jay 17

使用时setErrors,只需传递errors您想要的对象状态。因此,要重置所有错误,请传递一个空对象 ( {})。

setErrors({})

Run Code Online (Sandbox Code Playgroud)

Codesandbox演示在这里


小智 12

接受的答案对我不起作用。

有效的是:

formik.setTouched({}, false);
Run Code Online (Sandbox Code Playgroud)

  • 这就像一个魅力,谢谢。用例,关闭模态时重置表单。(表单存在于模态中)在我的例子中,我必须添加一个带有布尔变量的 useEffect 作为依赖项,每次有人按下关闭按钮关闭模态时都会切换。然后 useeffect 有一个返回函数,因此当组件卸载时它会运行您编写的这段代码。useEffect(() => { return function cleanUp() { formik.setTouched({}, false); }; }, [isClose]); (3认同)