我使用react with redux,我遇到了这个问题,导致登录和配置文件之间的无限循环。当我在配置文件中删除条件if(!cuurentUser)
进行调试时,它表明curentUser
是未定义的。
import React from "react";
import { Redirect } from 'react-router-dom';
import { useSelector } from "react-redux";
const Profile = () => {
const { currentUser }= useSelector((state) => state.auth);
if (!currentUser) {
return <Redirect to="/login" />;
}
return (
<div className="container">
<header className="jumbotron">
<h3>
<strong>{currentUser.username}</strong> Profile
</h3>
</header>
<p>
<strong>Token:</strong> {currentUser.accessToken.substring(0, 20)} ...{" "}
{currentUser.accessToken.substr(currentUser.accessToken.length - 20)}
</p>
<p>
<strong>Id:</strong> {currentUser.id}
</p>
<p>
<strong>Email:</strong> {currentUser.email}
</p>
<strong>Authorities:</strong>
<ul>
{currentUser.roles &&
currentUser.roles.map((role, index) => <li key={index}>{role}</li>)}
</ul>
</div>
);
};
export default Profile;
重定向到Profile
组件的组件有一个在用户登录时重定向的逻辑,很可能是使用某种useEffect
挂钩。此外,该重定向组件需要正确填充您的Redux存储,因此当您重定向到Profile
组件时,您的currentUser
在存储中可用,否则它将始终呈现Redirect
不知怎么的,我通过添加以下内容解决了问题:
const {user: currentUser} = useSelector((state) => state.auth);