我设置了以下函数,它可以正确地将数据发送到"userInfo",但是如何访问"id"的值以便在另一个函数中使用呢?
const [userInfo, setUserInfo] = useState("");
const userID = auth.currentUser.uid;
//function for automatically retrieving user
useEffect(() => {
const q = query(collection(db, 'users'), where("uid", "==", userID));
onSnapshot(q, (querySnapshot) => {
setUserInfo(querySnapshot.docs.map(doc => ({
id: doc.id,
data: doc.data()
})))
})
console.log(userInfo);
}, [])
请记住,"uid"不同于"id"。"id"是文档ID,"uid"是存储在文档中的值。
当我运行console. log(userinfo)时,它给了我一个对象数组。我唯一需要访问的是"id"的值。
我试着做console. log(userInfo [0]. id),直到我重新加载页面,然后我得到这个错误:
未捕获的类型错误:无法读取未定义的属性(读取"id")
1条答案
按热度按时间kqlmhetl1#
将useState初始化为一个空字符串
""
,然后在useEffect中更改它。由于useEffect在页面呈现后立即触发,因此在useState仍为字符串时,您将在某个时刻触发console.log(userInfo[0].id如果userInfo是一个字符串,当您试图访问
userInfo[0].id
时会发生什么情况?您正在试图访问未定义的内容如果您使用console.log,则以下不会崩溃: