Reactjs 反应firebase数组长度0
我在firebase和setState中获取了数据, 此.state.data数组的戳记为0 我不知道为什么,我需要你的帮助Reactjs 反应firebase数组长度0,reactjs,firebase,firebase-realtime-database,Reactjs,Firebase,Firebase Realtime Database,我在firebase和setState中获取了数据, 此.state.data数组的戳记为0 我不知道为什么,我需要你的帮助 constructor() { super(); this.state = { data:[], } } componentDidMount(){ this.getData(); } getData(){ const arrayItem = []; firebase.database().ref('da
constructor() {
super();
this.state = {
data:[],
}
}
componentDidMount(){
this.getData();
}
getData(){
const arrayItem = [];
firebase.database().ref('data').on('value', (snapshot) =>{
snapshot.forEach(function(childSnap){
arrayItem.push({
key:childSnap.key,
data:childSnap.val()
})
})
})
this.setState({
data:arrayItem
})
}
render() {
{console.log(this.state.data)}
firebase逻辑是异步的,因此您必须在
回调上的内部使用setState
,否则arrayItem
数组将为空
示例
getData() {
firebase
.database()
.ref("data")
.on("value", snapshot => {
const data = [];
snapshot.forEach(function(childSnap) {
data.push({
key: childSnap.key,
data: childSnap.val()
});
});
this.setState({ data });
});
}