В 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);
}