SetValues ​​Formik Функция отключает Formik HandleSubmit - PullRequest
1 голос
/ 19 июня 2019

У меня есть форма, которая может обрабатывать отправку несколькими способами.Разница управляется флагом в форме Значения, которые могут быть как истинными, так и ложными.

Я сталкиваюсь с этой действительно странной проблемой, когда при использовании функции Formik setValues ​​() форма не входит вФункция handleSubmit вообще.Это просто останавливает исполнение.Однако, если я устанавливаю значение, используя просто this.props.values.x = ..., он входит в функцию и продолжает отправку формы.

Почему это происходит?

показывать код на самом деле не имеет смысла, так как описание говорит вам все, но вот как выглядит обработчик отправки:

Вызов функции подтвержденияобработчик отправки, который устанавливает значение и затем пытается вызвать handleSubmit

        <Confirmation
          items={this.confirmationData()}
          isLoading={this.props.isSubmitting}
          open={isConfirming}
          preapproval={true}
          submitAnother={this.submitAnother}
          onClick={this.submit} //this is the submit handler
          onClose={() => this.setState({ isConfirming: false })}
        />

  submit = () => {
    this.props.setValues({ ...this.props.values, submit: true})
    this.props.handleSubmit()
  }

, если первая строка изменяется на this.props.values.submit = true, однако форма отправляется с использованием функции setValues,приложение перестает выполняться после установки значения отправки равным true.

1 Ответ

0 голосов
/ 19 июня 2019

Оказывается, проблема заключалась в том, что флаг проверки установлен в значение true при вызове setFieldValue, поэтому самое простое решение - передать третий аргумент setFieldValue, чтобы вручную отключить проверку:

  submit = () => {
    this.props.setFieldValue('submit', true, false)
    this.props.handleSubmit()
  }
...