TypeError:无法读取未定义错误的属性‘_id’
2020-05-17
348
我目前正在开发一个博客应用程序。我使用 react js 作为前端,使用 node js 作为后端。我有这个 isAuthenticated 方法。
export const isAuthenticated = () => {
if (typeof window == 'undefined') {
return false;
}
if (localStorage.getItem('jwt')) {
return JSON.parse(localStorage.getItem('jwt'));
}
else {
return false;
}};
我在这里使用它
<li className="nav-item">
<Link
to={`/user/${isAuthenticated().user._id}`}
style={isActive(history, `/user/${isAuthenticated().user._id}`)}
className="nav-link"
>
{`${isAuthenticated().user.name}'s profile`}
</Link>
</li>
它给了我 TypeError 错误:无法读取
to={
/user/${isAuthenticated().user._id
} 此部分中未定义的属性“_id”
请帮帮我,我想我无法从后端获取 _id,但每当我在谷歌浏览器开发工具中单击应用程序时,我都可以使用 jwt 令牌
2个回答
您尝试从 isAuthenticated 函数获取具有 user 属性的对象,但它仅返回字符串或布尔值。
Max Arzamastsev
2020-05-17
您的函数不仅可以返回 localStorage 项目,还可以返回 false。
因此请进行适当的检查,如下所示
isAuthenticated() ? (
<Link
to={`/user/${isAuthenticated().user._id}`}
style={isActive(history, `/user/${isAuthenticated().user._id}`)}
className="nav-link"
>
{`${isAuthenticated().user.name}'s profile`}
</Link>
) : (
<Link
to={`/login}`}
className="nav-link"
>
Login
</Link>
)
gdh
2020-05-17