我开发了一个返回值的简单承诺。该值必须更新react组件的状态。但它不起作用,因为组件函数setState在promise.then()范围内不可用。
login_account(this.state.email, this.state.password).then(function (session_token) {
return this.setState({token: session_token});
});
答案 0 :(得分:5)
使用提供词汇范围的arrow function
login_account(this.state.email, this.state.password).then((session_token) => {
return this.setState({token: session_token});
});
答案 1 :(得分:2)
几乎没有办法。如果您能够使用ES6语法 - 使用arrow functions,则不会更改范围。
如果您无法使用ES6语法,只需在上面创建this
上下文转储。像这样:
var self = this;
login_account(this.state.email, this.state.password).then(function (session_token) {
return self.setState({token: session_token});
});
其他方式,使用回调函数并使用本机JavaScript函数更改上下文 - bind
(doc)。可能它看起来像这样:
login_account(this.state.email, this.state.password)
.then(callbackFunction.bind(this, session_token));