Javascript 如何使用承诺返回更新react.js组件?

Javascript 如何使用承诺返回更新react.js组件?,javascript,reactjs,Javascript,Reactjs,我开发了一个返回值的简单承诺。此值必须更新react组件的状态。但是它不起作用,因为组件函数setState在promise.then()范围中不可用 使用提供词法范围的 login_account(this.state.email, this.state.password).then((session_token) => { return this.setState({token: session_token}); }); 使用提供词法范围的 l

我开发了一个返回值的简单承诺。此值必须更新react组件的状态。但是它不起作用,因为组件函数setState在promise.then()范围中不可用

使用提供词法范围的

login_account(this.state.email, this.state.password).then((session_token) => {
            return this.setState({token: session_token});
        });
使用提供词法范围的

login_account(this.state.email, this.state.password).then((session_token) => {
            return this.setState({token: session_token});
        });

几乎没有办法。如果您能够使用ES6语法-use,那么他们不会更改范围

如果您不能使用ES6语法,只需在上面创建
this
contex的转储。像这样:

var self = this;    
login_account(this.state.email, this.state.password).then(function (session_token) {
       return self.setState({token: session_token});
});
另一种方法是使用回调函数并使用本机JavaScript函数更改上下文-
bind
()。可能看起来像这样:

login_account(this.state.email, this.state.password)
   .then(callbackFunction.bind(this, session_token));

几乎没有办法。如果您能够使用ES6语法-use,那么他们不会更改范围

如果您不能使用ES6语法,只需在上面创建
this
contex的转储。像这样:

var self = this;    
login_account(this.state.email, this.state.password).then(function (session_token) {
       return self.setState({token: session_token});
});
另一种方法是使用回调函数并使用本机JavaScript函数更改上下文-
bind
()。可能看起来像这样:

login_account(this.state.email, this.state.password)
   .then(callbackFunction.bind(this, session_token));