1
我试图通过props
将一些Firebase数据从一个组件传递到另一个组件,但似乎并没有让我遍历子组件中的Firebase数据。反应:通过道具传递Firebase数据
App.js
class App extends Component {
constructor(props) {
super(props);
this.state = {
games: []
};
}
componentDidMount() {
const gamesRef = firebase.database().ref('games').orderByKey();
gamesRef.once('value', snap => {
snap.forEach((childSnapshot) => {
this.state.games.push(childSnapshot.val());
})
})
}
render() {
return (
<div className="App">
<Games data={ this.state.games } />
</div>
);
}
}
Games.js
class Games extends Component {
componentDidMount() {
console.log(this.props.data); // this logs successfully
}
render() {
return (
<div className="container">
<div className="Games flex flex-end flex-wrap">
{ this.props.data.map(function (game, i) {
return (
<h1>{ game.title }</h1>
)
}) }
</div>
</div>
);
}
}
在过去我props.data
试图map()
时,我有一个问题,有些道理的。这绝对是传递给我的Games
组件,因为它将console.log(this.props.data)
打印到控制台并从Firebase获取数据。
我是否必须等待我的Firebase数据才能在映射之前解决,如果是的话,我该如何执行此操作?
任何帮助表示赞赏。提前致谢!
感谢您的支持!我不得不把'this.setState()'行放在firebase回调中。这似乎工作! – realph