【发布时间】:2019-07-03 20:31:18
【问题描述】:
我正在将属性从父级传递给子级,并希望映射结果数组。
当我尝试控制台记录结果时,属性仅在第二次调用该函数后才到达。第一次返回“[]”。即使收到状态“用户”数组,映射它也无济于事。
state={
users: null
}
componentWillReceiveProps(){
var userInLobby = this.props.users && this.props.users.map(userdata=>{
if(userdata.status === "online"){
var user =
firebase.firestore().collection("users").doc(userdata.id).get().then(user=>{
return {
username: user.data().username,
};
})
return user
}else{
return null;
}
})
var userInLobbyDisplay = []
userInLobby && Promise.all(userInLobby).then(values =>
values.map(user=>{
return userInLobbyDisplay.push(user)
}))
this.setState({
users: userInLobbyDisplay
})
}
render(){
console.log(this.state.users)
return(
<div className="lobby">
{
this.state.users && this.state.users.map(user=>{
return user.username
})
}
</div>
)
第一次接收 props 时,如何将用户数组从 state 映射到 DOM?
【问题讨论】: