您好,我正在嘗試從我的 Firebase Firestore 中獲取一些資料并將其保存到我的 React 應用程式中。我的代碼是這樣的:
const [firebaseOrders, setFirebaseOrders] = useState([])
useEffect(() => {
const getOrders = async () => {
const querySnapshot = await getDocs(collection(db, `users/[email protected]/orders`));
querySnapshot.forEach((doc) => {
const newOrder = doc.data()
setFirebaseOrders([...firebaseOrders, newOrder])
})
}
getOrders();
}, [])
console.log(firebaseOrders)
我希望通過我的訂單獲得一系列物件。相反,當我使用擴展運算子時我的陣列沒有保存,所以我最終只得到陣列中的最后一項:
這是我在控制臺中得到的圖片

[{…}]
->0 : {titles: Array(2), timestamp: nt, prices: Array(2), amount: 869.99, amount_shipping: 6.99, …}
length : 1
->[[Prototype]] : Array(0)
[{…}]
->0 : {amount: 78.29, timestamp: nt, titles: Array(2), amount_shipping: 0, prices: Array(2), …}
length : 1
->[[Prototype]] : Array(0)
我覺得我缺少一些基本的東西,任何人都可以幫助我嗎?
uj5u.com熱心網友回復:
修改狀態是一個異步操作,所以在一個緊密的回圈中執行此操作(就像您所做的那樣)意味著您每次都在覆寫以前的值。
相反,setFirebaseOrders只呼叫一次所有結果:
setFirebaseOrders(
querySnapshot.docs.map((doc) => doc.data());
})
另請注意,console.log(firebaseOrders)可能不會顯示正確的值,因為它可能在setFirebaseOrders(...)運行/完成之前運行。
如果您想查看來自州的訂單,請在 UI 的組件中顯示它們。如果你想console.log從資料庫中得到什么,在回呼中這樣做:
const orders = querySnapshot.docs.map((doc) => doc.data());
console.log(orders);
setFirebaseOrders(orders);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/533939.html
標籤:Google Cloud Collective javascript数组火力基地google-cloud-firestor
