0

当从 API 返回 401 时,我想在组件中显示错误消息。我正在尝试使用不受任何约束的状态并且正在使用 ES6。我正进入(状态

Cannot read property 'setState' of undefined

这是登录功能:

login(e) {
    e.preventDefault();
    AuthService.login(this.state.username, this.state.password)
    .catch(function (err) {
        console.log(err);
        this.setState({loginFailed: true});
    });
}
4

2 回答 2

1

我同意 DVG 的答案是最好的,前提是您使用的是 ES6。

但是,您也可以这样做。

login(e) {
  e.preventDefault();

  var self = this;

  AuthService.login(this.state.username, this.state.password)
  .catch((err) => {
    console.log(err);
    self.setState({loginFailed: true});
  });
}
于 2015-09-11T16:27:19.290 回答
1

在 Promise 解决方案中,您从外部对象中失去了 this 的范围,并且处于 Promise 的上下文中。

由于您使用的是 ES6,因此您可以使用粗箭头将外部 this 绑定到函数内部。

login(e) {
    e.preventDefault();
    AuthService.login(this.state.username, this.state.password)
    .catch((err) => {
        console.log(err);
        this.setState({loginFailed: true});
    });
}
于 2015-09-11T16:08:40.313 回答