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