问题描述
我正在尝试在收到来自服务器的错误响应后手动设置我的 formik 实例的状态:
const formik = useFormik({
initialValues: {
email: "",password: "",},onSubmit: async ({ email,password },{ setStatus }) => {
try {
const response = await loginUser({
variables: {
email,password,});
} catch (error) {
await setStatus({ email: error.message,password: error.message });
console.log(formik.status);
}
formik.resetForm();
},validationSchema: Yup.object().shape({
email: Yup.string(),password: Yup.string(),}),});
记录状态打印 undefined
。
为什么没有设置状态?
解决方法
想通了。
使用 resetForm 清除表单状态和错误。
为了解决这个问题,我手动清除了两个字段:
initialValues={{
email: "",password: "",}}
onSubmit={async ({ email,password },{ setStatus,setFieldValue }) => {
try {
const response = await loginUser({
variables: {
email,password,},});
} catch (error) {
setStatus({
email: "Shit",});
setFieldValue("email","");
setFieldValue("password","");
}
}}
validationSchema={Yup.object().shape({
email: Yup.string(),password: Yup.string(),})}