从Firestore获取数据时日期字段返回undefined问题求助
问题原因及解决方案
- 核心问题:React的状态更新是异步的,调用
setDocument(docSnap.data())后,无法立刻通过Document状态变量获取最新值——此时Document还是更新前的初始值(大概率为undefined),因此Document.dateCreated自然返回undefined。同时,setDocumentDate也是异步更新状态的,直接打印DocumentDate同样拿不到刚设置的值。
修正代码示例
const docSnap = await getDoc(docref); if (docSnap.exists()) { const docData = docSnap.data(); console.log(docData); // 先把文档数据存入临时变量,直接用临时变量处理字段 setDocument(docData); setDocumentDate(docData.dateCreated); // 要查看日期直接打印临时变量里的对应字段 console.log(docData.dateCreated); } else { console.log("Document does not exist"); }
额外说明
如果需要将Firestore的Timestamp类型转换为JavaScript原生Date对象,可调用Timestamp的toDate()方法:
setDocumentDate(docData.dateCreated.toDate());
内容的提问来源于stack exchange,提问作者Divyansh Bhardwaj
相关产品推荐
相关产品推荐

