无法使用 Firebase 更新我的数组或状态 - React Native
Cant update my array or state using Firebase - React Native
我在开发我的应用程序时遇到了一些困难。到目前为止,我能够连接到 Firestore 数据库并获取我的文档。我的计划是从每个文档中获取数据并将其存储在一个数组中。从那里我会展示它。
我遇到的问题是第一次渲染的结果不会将元素添加到数组中。 DATA.push() 方法有效但它没有保存在此 forEach 循环之外?
谢谢!
常量数据是存储文档引用的位置。
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 = [];
您可以只映射数组中所有文档的数据,将其设置为状态并呈现它。尝试重构代码,如下所示:
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>
)
我在开发我的应用程序时遇到了一些困难。到目前为止,我能够连接到 Firestore 数据库并获取我的文档。我的计划是从每个文档中获取数据并将其存储在一个数组中。从那里我会展示它。
我遇到的问题是第一次渲染的结果不会将元素添加到数组中。 DATA.push() 方法有效但它没有保存在此 forEach 循环之外? 谢谢!
常量数据是存储文档引用的位置。
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 = [];
您可以只映射数组中所有文档的数据,将其设置为状态并呈现它。尝试重构代码,如下所示:
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>
)