Formik - как показать дополнительное сообщение об ошибке при сбое проверки при отправке - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно показать дополнительное сообщение об ошибке, если проверка не прошла при отправке.Это сообщение об ошибке не должно отображаться, если проверка не удалась при изменении / размытии.Похоже, нет никакого способа определить, произошли ли ошибки проверки при отправке, поскольку функция проверки вызывается при изменении, размытии и отправке.Проверка, которая происходит при изменении / размытии, может быть отключена, поэтому я знаю, что ошибки происходят при отправке, но мне нужно, чтобы проверка также происходила при изменении и размытии.

Вот что я сделал:

<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>

Это работает, но функция проверки запускается дважды при нажатии кнопки отправки.Есть лучший способ сделать это?

...