在使用firebase和react设置配置文件时,我得到Cannot read properties of undefined: (reading 'name')
的错误。然而,奇怪的是,当我保存更改时并没有发生这种情况,而是当我刷新页面时。我很好奇,为什么会发生这种情况?
以下是刷新前(保存我的工作时):
以下是刷新localhost后的情况:
下面是我目前的代码:
useEffect(() => {
onAuthStateChanged(auth, async (user) => {
if (user) {
const snapshot = await getDoc(doc(db, "users", user.uid))
console.log(snapshot.data().name)
const userData= snapshot.data();
setProfile(userData);
}
});
}, []);
return (
<>
<Card>
<Card.Body>
<h2 className="text-center mb-4"> Profile</h2>
<p className="details">
{JSON.stringify(profile.name)}
</p>
{error && <Alert variant="danger">{error}</Alert>}
</Card.Body>
</Card>
<div className="w-100 text-center mt-2">
<Button variant="link" onClick={handleLogout}>
{" "}
Log out{" "}
</Button>
</div>
</>
);
};
现在,我将继续使用JSON.stringify(profile)
,因为它工作正常,但只是对这个问题感到好奇。
1条答案
按热度按时间yyyllmsg1#
无法读取未定义的属性:(阅读“姓名”)
这个错误意味着,
name
没有可用的属性。这个问题是你遇到的bcoz DOM是第一次渲染没有API数据,然后useEffect
调用。要解决此问题,可以使用
1.可选链接:-如
profile?.name
1.使用条件渲染:-
对于此类错误,始终使用这些选项。