我在開發我的應用程式時有點卡住了。到目前為止,我能夠連接到 Firestore 資料庫并獲取我的檔案。我的計劃是從每個檔案中獲取資料并將其存盤在一個陣列中。從那里我將展示它。
我遇到的問題是第一次渲染的結果不會將元素添加到陣列中。DATA.push() 方法有效,但它沒有保存在這個 forEach 回圈之外?謝謝!
const data 是存盤檔案 ref 的位置。
const DATA = [] 是陣列。
const [data, setdata]= useState([{}]);
useEffect(() => {
const getUsers = async () => {
const data = await getDocs(usersCollectionRef);
data.forEach(doc =>{
DATA.push({id: doc.id, title: doc.data().Type, status: doc.data().status, location: doc.data().Location, type: doc.data().Type, injured: doc.data().Injured, collar: doc.data().Collar, color: doc.data().Colour })
})
};
getUsers();
console.log(dataNew);
}, []);
const DATA = [];

uj5u.com熱心網友回復:
您可以只映射陣列中所有檔案的資料,將其設定為狀態并渲染它。嘗試重構代碼,如下所示:
const [data, setData]= useState([]);
useEffect(() => {
const getUsers = async () => {
const snapshot = await getDocs(usersCollectionRef);
const data = snapshot.docs.maps(d => ({ id: d.id, ...d.data() }))
console.log(data);
setData(data);
};
getUsers();
}, []);
return(
<div>
{
data.map((d) => {
<p>{ d.id }</p>
})
}
</div>
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/439745.html
