Мне нужно показать дополнительное сообщение об ошибке, если проверка не прошла при отправке.Это сообщение об ошибке не должно отображаться, если проверка не удалась при изменении / размытии.Похоже, нет никакого способа определить, произошли ли ошибки проверки при отправке, поскольку функция проверки вызывается при изменении, размытии и отправке.Проверка, которая происходит при изменении / размытии, может быть отключена, поэтому я знаю, что ошибки происходят при отправке, но мне нужно, чтобы проверка также происходила при изменении и размытии.
Вот что я сделал:
<Formik
validate={values => {
const errors = {};
if(!values.reason){
errors.reason = 'This is required';
}
return errors;
}}
>
{{errors, status, setStatus, validateForm} => (
<Form>
{status && <div>There was a problem submitting the form</div>}
<Field type="text" name="reason"/>
<ErrorMessage name="reason" />
<button type"submit" onClick={() => {
validateForm().then(errors => {
if(Object.keys(errors).length > 0){
setStatus('error');
}
});
}}>
Submit
</button>
</Form>
)}
</Formik>
Это работает, но функция проверки запускается дважды при нажатии кнопки отправки.Есть лучший способ сделать это?