如何使用promise返回更新react.js组件?

时间:2016-12-27 14:38:11

标签: javascript reactjs

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

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

2 个答案:

答案 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函数更改上下文 - binddoc)。可能它看起来像这样:

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