我目前正在开发一个博客应用程序。我将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错误:无法读取未定义的属性'_id'
to = {{/user/${isAuthenticated().user._id}
}这一部分
请帮助我库存,我无法从后端获取_id,但是每当我单击Google chrome开发工具中的应用程序时,我都可以jwt令牌
答案 0 :(得分:1)
您尝试从 isAuthenticated 函数获取具有 user 属性的对象,但它仅返回字符串或布尔值。
答案 1 :(得分:0)
您的函数不仅可以返回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>
)