为什么我不能在superagent请求中更新我的州财产?

时间:2015-11-05 21:26:51

标签: reactjs react-native superagent

我有一个Button Listener,通过superagent传递一些登录信息,我得到一个令牌返回。现在我想将我的状态属性更新为收到的令牌,我得到了正确的答案。但我的this.state.token似乎没有更新。

这是我的代码:

_btnLoginListener: function () {

    var that = this;
    superAgentRequest
        .post(URL + TOKENS_KEY)
        .type('json')
        .send({ 
            email:    this.state.usernameOrEmail,
            password: this.state.password
        })
        .end(function ( err, res ) {
            // Calling the end function will send the superAgentRequest
            if (res.status == 200) {
                /*var token = JSON.parse(res.text).token; // working*/
                /*ToastAndroid.show("POST Response -> " + token, ToastAndroid.SHORT)*/
                that.setState({
                    token: JSON.parse(res.text)
                })
                navigator.replace({
                    id:   'MainController',
                    name: 'MainController',
                });
            } else {
                notifyMessage ("Please check credentials again!")
            }
        })
  }
  notifyMessage (that.state.token)
},

1 个答案:

答案 0 :(得分:1)

你在这里处理的只是2个异步进程:

  1. 发送ajax请求,其响应与当前代码异步运行。这意味着在退出此函数

  2. 之后调用回调
  3. this.setState不会立即更改它,但会安排当前组件的状态稍后更改并重新呈现。

  4. 基本上意味着什么:您过早地检查this.state