【发布时间】:2019-03-02 10:27:36
【问题描述】:
我要做的是从 firebase 获得一系列问题,我确实明白了,就像 console.logs 显示的那样。
唯一的问题是当我尝试将该数组添加到我的状态“preguntas”时,我最初将其设置为 null,然后将其更改为 [] 认为可能是这样。我也尝试过 concat 和我发现的其他东西。
一件事我也做过,虽然不知道是不是别的原因,我试过了
preguntasRef.on('value', snap => ...
只是为了得到相同的结果。但这可能是因为我试图将数组设置为我的状态。
基本上我不知道我是否在某个时候确实得到了答案,只是实施不正确,所以我仍然无法将从 firebase 获得的信息添加到我的状态。
(图片更新,上一张图片没有问题键,因为问题也是从应用程序上传的)。 这是 Firebase 中的数据库:
这是我的代码:
constructor(props) {
super(props);
this.state= {
preguntas: [],
ponenteSelect: this.props.match.params.id,
idOrador: this.props.location.state
}
}
componentWillMount(){
var preguntasRef = firebase.database().ref(this.state.idOrador).child("preguntas");
preguntasRef.on('value', this.gotData, this.errData);
/*preguntasRef.on('value', snap =>{
this.setState({
preguntas: snap.val()
});
});*/
}
gotData(data){
let preguntasFirebase = data.val();
console.log(preguntasFirebase);
if (preguntasFirebase !== null) {
this.setState({ preguntas: this.state.preguntas.concat(preguntasFirebase)});
//this.setState({ preguntas: [...this.state.preguntas, ...preguntasFirebase]});
//console.log(`Json preguntas ${jsonPregs}`);
/*let keys = Object.keys(preguntas);
for (let i=0; i<keys.length;i++){
let k = keys[i];
let pregunta = preguntas[k].pregunta;
conjuntoPregs.push(pregunta);
}*/
}
}
errData(err){
console.log('Error!', err);
}
如您所见,我尝试了三件主要的事情。第一个是 reference.on(vale, snap=>),第二个是 on 和一个带有 for 的函数,第三个是在同一个函数中,我只是注释了 for 并直接执行了 setState。
【问题讨论】:
标签: javascript arrays reactjs firebase firebase-realtime-database