我想显示一个屏幕,其中包含用户针对某项任务的报价。问题是我必须加载商品,然后对于每个商品,我都需要用户数据作为其审阅计数器。
为什么这不起作用?我根本无法弄清楚 使用下面的代码,我已经完成了将显示数据的操作,但是显示了2次。第一次,我只获得了要约数据,第二次获得了所需的全部数据。但是它只能显示一次,并且只能显示完整数据。我该怎么办?
loadTaskOffers() {
var offers = [];
firebase
.database()
.ref("Offers")
.child(this.state.taskID)
.once("value", snap => {
if (snap.exists()) {
snap.forEach(snap_offer => {
var offer = snap_offer.val();
offers.push(offer);
});
this.setState({ only_offers: offers });
}
})
.then(() => {
this.state.only_offers.forEach(offer => {
firebase
.database()
.ref("Users")
.child(offer.posterID)
.once("value", snap => {
offer["user"] = {
fullName:
snap.val().firstName +
" " +
snap.val().lastName.charAt(0) +
".",
profileImgUrl: { uri: snap.val().profileImgUrl },
averageRating: snap.val().reviews.asWorker.average,
ratingCounter: snap.val().reviews.asWorker.count
};
console.log(offer);
offers.push(offer);
});
});
this.setState({ offers: offers, only_offers: null });
console.log(this.state.offers);
});
}