React: formik form, как использовать состояние после отправки внутри функции обратного вызова - PullRequest
4 голосов
/ 03 августа 2020

Я использую formik плагин в reactjs и хочу useState переменных после отправки формы.

Оба this и setState не определены, и я не могу этого добиться. Может ли кто-нибудь помочь мне сделать это?

См. Снимок экрана (ниже) введите описание изображения здесь

1 Ответ

4 голосов
/ 03 августа 2020

В JavaScript методы класса по умолчанию не привязаны. Если вы забыли привязать this.LoginApp и передать его в onSubmit, this будет undefined при фактическом вызове функции (как вы уже отметили).

Это не React -specifi c поведение; это часть того, как функции работают в JavaScript.

Как правило, если вы ссылаетесь на метод без () после него, например onSubmit={this.LoginApp}, вы должны привязать этот метод. И чтобы избежать проблем с производительностью, обычно рекомендуется привязать конструктор или использовать синтаксис полей класса. Вот хорошее чтение от группы реагирования .

constructor(props) {
  this.state = {...};

  // This binding is necessary to make `this` work in the callback
  this.LoginApp = this.LoginApp.bind(this);
}
...