开发者问题收集

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