Я видел подобные вопросы в Интернете, но ни одно из их решений не помогло мне.
Я создаю приложение в React Native, которое загружает информацию из firebase, а затем отображает ее. Я хочу загрузить объекты из firebase, поместить их в массив, а затем установить состояние, чтобы класс повторно отображал и отображал его после загрузки.
Информация загружается нормально, но я не могу найти способ вызвать setState после загрузки массива. Я попробовал обещания и попытался использовать другую функцию в качестве обратного вызова, но у меня пока ничего не получалось. Он всегда выполняет setState до загрузки массива. Я не знаю, будет ли использование setTimeout каким-то образом хорошим решением.
Вот часть кода (я хочу обновить jArray в this.state, а затем заново отрендерить страницу) :
constructor(props){
super(props);
this.state = {
jArray: []
}
}
componentDidMount(){
this.getJ();
}
async getJ(){
let jArray = [];
let ref = database.ref('users/' + fb.auth().currentUser.uid + '/usersJ');
let snapshot = await ref.once('value');
let itemProcessed = 0;
let hhh = await snapshot.forEach(ch => {
database.ref('J/' + ch.val()).once('value')
.then(function(snapshot1){
jArray.push(snapshot1);
itemProcessed++;
console.log(itemProcessed);
if(snapshot.numChildren()===jArray.length){
JadArray = jArray
}
})
});
}
Спасибо (: