我已经配置了firebase设置,下面是我的一段代码:
const [PostList, SetPostList] = useState([])
const db = getFirestore(firebaseConfig)
const q = query(collection(db, "posts"))
const querySnapshot = getDocs(q)
useEffect(()=>{
querySnapshot.then(data=> data.forEach(post => {
SetPostList([post.data()])
console.log(PostList)
}))
}, [])
应该在循环外调用SetPostList
:
useEffect(() => {
let result = [];
querySnapshot.then((data) => {
data.forEach((post) => {
result.push(post.data());
console.log(PostList);
});
SetPostList(result);
});
}, []);
我找到了答案:
const db = getFirestore(firebaseConfig)
const q = query(collection(db, "posts"));
const unsubscribe = onSnapshot(q, querySnapshot => {
const cities = [];
querySnapshot.forEach((doc) => {
cities.push(doc.data());
});
SetPostList(cities)
});