props
経由でFirebaseのデータを1つのコンポーネントから別のコンポーネントに渡そうとしていますが、子コンポーネントのFirebaseデータを反復処理しているようには見えません。React: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()
にしようとしたとき、私は問題を抱えているいくつかの理由。 Fireboxから戻ってくるデータでconsole.log(this.props.data)
をコンソールに表示しているので、間違いなく私のGames
コンポーネントに渡されています。
マッピングする前にFirebaseのデータが解決するのを待つ必要がありますか?もしそうであれば、どうすればいいですか?
何か助けていただければ幸いです。前もって感謝します!
ありがとうございます! firebaseコールバックの中に 'this.setState()'行を置く必要がありました。これはうまくいくようでした! – realph