警告错误反应引导程序

时间:2015-09-11 15:56:29

标签: javascript reactjs react-bootstrap

我希望在从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});
    });
}

2 个答案:

答案 0 :(得分:1)

在promise解析中,你从外部对象中失去了它的范围,并且在promise的上下文中。

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

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

答案 1 :(得分: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});
  });
}