非同期処理のsetStateが完了するまではif文でLoadingを表示する仕様としているが、setStateが完了してもrenderが自動更新されない様です。こちらはpushでは浅く、concatにしないとダメという記事も読んだのですがいかがでしょうか。もしconcatを用いてどう修正したら良いかご教示頂けますととても助かります。宜しくお願いいたします
class Grammer extends React.Component {
state = { N1:[], N2:[], N3:[] }; componentDidMount(){ const fetchData = () =>{ firebase.database().ref("N3") .on(("value"),(snapshot)=>{ snapshot.forEach((childSnapshot)=>{ this.setState(()=>{ N3: this.state.N3.push({ id: childSnapshot.key, ...childSnapshot.val() }) }); }); console.log(this.state.N3[0]) }); }; fetchData();
};
render(){ if(!this.state.N3[0]){ return <div>Loading</div> }else if(this.state.N3[0]){ return( <div> <N3Grammer N3={this.state.N3}/> </div> ) } }
};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 11:41