React native React Native:从firestore获取数据后,屏幕上没有显示任何内容

React native React Native:从firestore获取数据后,屏幕上没有显示任何内容,react-native,google-cloud-firestore,React Native,Google Cloud Firestore,这是我的代码: const[visitors,setvisitors]=useState(null) const[saved,setsave]=useState(“”); const{user,logout}=useContext(AuthContext); const[userData,setUserData]=useState(null); const[loading,setLoading]=useState(true); const getUser=async()=>{ 等待firest

这是我的代码:

const[visitors,setvisitors]=useState(null)
const[saved,setsave]=useState(“”);
const{user,logout}=useContext(AuthContext);
const[userData,setUserData]=useState(null);
const[loading,setLoading]=useState(true);
const getUser=async()=>{
等待firestore()
.collection('用户')
.doc(user.uid)
.get()
.然后((文档快照)=>{
如果(documentSnapshot.exists){
log('书签中的用户数据',documentSnapshot.Data());
常量列表=[];
setUserData(documentSnapshot.data());
console.log('savedPosts:',documentSnapshot.data().savedPosts);
documentSnapshot.data().savedPosts.map((对象,索引)=>(
firestore().collection('posts').doc(object).get().then((querySnapshot)=>{list.push(querySnapshot.data())}
))
旅游者(名单);
如果(装载){
设置加载(假);
}
}
})
}
useffect(()=>{
getUser();
}, []);
返回(

{!加载?((游客| |[]).map((对象,索引)=>(…
问题在本部分:

const list=[];
setUserData(documentSnapshot.data());
console.log('savedPosts:',documentSnapshot.data().savedPosts);
documentSnapshot.data().savedPosts.map((对象,索引)=>(
firestore().collection('posts').doc(object).get().then((querySnapshot)=>{list.push(querySnapshot.data())}
))
旅游者(名单);
因为您使用
then
设置游客(列表)将始终保存一个空数组,因为
then
在您已经设置值之后完成。另外
map
不支持异步调用。为此,我们需要使用
for
循环

将代码更改为以下内容:

const getUser=async()=>{
等待firestore()
.收集(“用户”)
.doc(user.uid)
.get()
。然后(异步(文档快照)=>{
if(documentSnapshot.exists){
log(“书签中的用户数据”,documentSnapshot.Data());
常量列表=[];
const posts=[];
setUserData(documentSnapshot.data());
documentSnapshot.data().savedPosts.map((对象,索引)=>{
推(物体);
});
for(设i=0;i
需要查看映射代码,无法从您发布的内容中得知感谢您的回答,但它仍然不起作用,querySnapshot为空。
object
有什么值?文档id,顺便说一句,应该是post,而不是object。您可以从更新答案中记录
post
docSnapshot
。还有
list
并将您看到的数据写在列表中。它工作正常。非常感谢!!那么为什么docSnapshot可以解决这个问题呢?