setState用户属性返回未定义,但是当我从firebase中检查反应开发人员工具用户对象中的状态时,它具有我想要的实际值
state = {
coinList: {},
fav: [],
currentFavourite: '',
prices: [],
authed: false,
user: null
};
componentDidMount = () => {
this.removeListener = firebase.auth().onAuthStateChanged((user) => {
if (user) {
this.setState({
authed: true,
user
});
} else {
this.setState({
authed: false
});
}
});
this.ref = base.syncState('fav', {
context: this,
state: 'fav',
asArray: true
});}
答案 0 :(得分:2)
如果您的console.log语句位于removeListener内,则我怀疑在调用console.log时状态尚未更新。
setState是异步的,因此在执行下一条语句时已在后台对其进行了更新。
您可以为setState提供仅在setState完成后才调用的函数或语句。...
this.setState({ user }, this.someFunction())
或者简单地...
this.setState({ user }, console.log(this.state.user));