当我打开屏幕时,直到我第一次提交表单之前,我看不到任何验证错误。正确输入电子邮件地址并通过单击按钮提交表单后,表单逻辑即可正常工作。显示警报,并且该字段已重置(有意)
但是,一旦我关闭警报,Formik仍然会显示一个错误,我必须输入电子邮件地址(必填字段)。是否也可以重置错误?就像我第一次打开屏幕时一样?我希望仅在提交表单而不输入任何内容时出现此错误。
我的代码段:
在此处重置值:
const initialValues: FormValues = {
email: '',
};
const handleSubmitForm = React.useCallback(
(values: FormValues, helpers: FormikHelpers<FormValues>) => {
console.log('Submitted');
loadUsers({
variables: {
where: { email: values.email },
},
});
values.email = '';
},
[loadUsers],
);
<Formik
initialValues={initialValues}
onSubmit={handleSubmitForm}
validationSchema={validationSchema}>
{({
handleChange,
handleBlur,
handleSubmit,
values,
}) => (
<View style={styles.searchFieldContainer}>
<View
style={styles.form}
>
<FieldInput
handleChange={handleChange}
handleBlur={handleBlur}
value={values.email}
fieldType="email"
/>
<ErrorMessage
name="email"
render={(msg) => (
<Text style={styles.errorText}>
{msg}
</Text>
)}
/>
</View>
<View style={styles.buttonContainer}>
<Button
rounded
style={styles.button}
onPress={handleSubmit}>
<Text style={styles.text}>
Add Friend{' '}
</Text>
</Button>
</View>
</View>
)}
</Formik>
答案 0 :(得分:1)
您可以使用setFieldError
或setErrors
。
我不确定您确切要在哪里清除错误,但是如果不在表单中,则可以获取ref
的formik组件并调用setFieldError
或{{1 }}。
例如
setErrors
与您的代码无关的其他问题
执行setFieldError('email', undefined)
并不是一件好事,如果您想重置values.email = '';
的值,则应使用setFieldValue
,就像您将使用email
一样。 / p>
例如
setFieldError