我正在跟踪Firebase中的文档,我可以发布图片,它们可以到达我的集合( pictures ),但是我无法返回它们,我不会得到任何错误,但是它永远不会到达get方法中的控制台日志,这是基本按照文档完成的代码:
import React, { Component } from "react";
import firebase, { firestore } from "firebase";
const firebaseConfig = {
apiKey: "AIzaSyBaYaChURjABW6kNE0D5yQaIU88RxhFAL4",
authDomain: "jammer-documents.firebaseapp.com",
databaseURL: "https://jammer-documents.firebaseio.com",
projectId: "jammer-documents",
storageBucket: "jammer-documents.appspot.com",
messagingSenderId: "74638218427",
appId: "1:74638218427:web:8ce7ba1fc2f8de7d4bc59e"
};
firebase.initializeApp(firebaseConfig);
export default class Pictures extends Component {
state = {
photos: []
};
componentDidMount() {
let images = [];
firebase
.firestore()
.collection("Pictures")
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
let imageData = {
url: doc.data().url,
created: doc.data().added
};
images.push(imageData);
});
});
console.log("images", images);
console.log(this.state.photos);
this.setState({ photos: images });
console.log(this.state.photos);
}
render() {
const items = this.state.photos;
return (
<div className="container-fluid pt-3">
<div className="card-columns">
{items.map(i => (
<div className="card">
<img className="card-img-top materialboxed" src={i.url} alt="" />
</div>
))}
</div>
</div>
);
}
}发布于 2020-02-11 13:36:38
componentDidMount内部的代码块是异步的,因此直接调用setState。您需要在请求返回之后以及在遍历了每个文档之后设置状态:
let images = [];
firebase
.firestore()
.collection("Pictures")
.get()
.then((querySnapshot) => {
querySnapshot.forEach(function(doc) {
let imageData = {
url: doc.data().url,
created: doc.data().added
};
images.push(imageData);
});
this.setState({ photos: images });
});https://stackoverflow.com/questions/60167647
复制相似问题