我有一个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)
},
答案 0 :(得分:1)
你在这里处理的只是2个异步进程:
发送ajax请求,其响应与当前代码异步运行。这意味着在退出此函数
this.setState
不会立即更改它,但会安排当前组件的状态稍后更改并重新呈现。
基本上意味着什么:您过早地检查this.state
。