我目前正在尝试以反复原生方式从firebase数据库返回用户名。 console.log在函数内部工作,但不记录函数之外的任何内容。我不知道我哪里出错了。这是我的代码。
componentWillMount() {
firebase.database().ref('/users/' + this.userId + '/username').once('value').then(function(snapshot) {
this.username = snapshot.val();
console.log(this.username)
});
console.log(this.username)
this.setState({
username: this.username
})
}
答案 0 :(得分:0)
这是因为JavaScript的异步性质。你应该在回调中做setState
。
firebase.database().ref('/users/' + this.userId + '/username').once('value').then(snapshot => {
this.username = snapshot.val();
console.log(this.username);
this.setState({
username: this.username
})
});
答案 1 :(得分:0)
出于某种原因,将语法更改为es6的箭头函数使代码工作,并在函数中添加this.setState
componentWillMount() {
firebase.database().ref('/users/' + this.userId + '/username').once('value').then((snapshot) => {
this.username = snapshot.val();
console.log(this.username)
this.setState({
username: this.username
})
})
}