[英]NavBar displaying when user is not logged in. Want navbar to render after user has token
I am struggling with getting my NavBar to not display/show until a user has logged in (received a token).我正在努力让我的 NavBar 在用户登录(收到令牌)之前不显示/显示。 I know you can set it up using a ternary but I am not able to get one to function.我知道你可以使用三元来设置它,但我无法让它发挥作用。 Wondering if anyone can help me write the code to have it function correctly.想知道是否有人可以帮助我编写代码以使其正常运行。
import Auth from './Auth/Auth';
import Sitebar from './Home/Navbar';
import ReviewIndex from './Reviews/ReviewIndex';
import Navigation from './Home/Navigation'
import {
BrowserRouter as Router //We are importing the specific part of the package BrowserRouter but calling it Router.
} from 'react-router-dom';
function App() {
const [sessionToken, setSessionToken] = useState('');
useEffect(() => {
if (localStorage.getItem('token')){
setSessionToken(localStorage.getItem('token'));
}
}, [])
const updateToken = (newToken) => {
localStorage.setItem('token', newToken);
setSessionToken(newToken);
console.log(sessionToken)
}
const clearToken = () => {
localStorage.clear();
setSessionToken('');
window.location.href="/" //Redirects to localhost:3001 on click of logout
}
const protectedViews = () => {
return (sessionToken === localStorage.getItem('token') ? <ReviewIndex token={sessionToken}/>: <Auth updateToken={updateToken}/>)
}
return (
<div className="App">
<Router>
<Sitebar sessionToken={sessionToken} clickLogout={clearToken}/>
<Navigation sessionToken={sessionToken} />
{protectedViews()}
</Router>
</div>
);
}
export default App;
Try Replacing尝试更换
<Navigation sessionToken={sessionToken} />
with和
{sessionToken !== '' && <Navigation sessionToken={sessionToken} />}
Assuming that's the line you want to make conditional it will evaluate the sessionToken first and it will only reach the JSX code after the "&&" if the first part is true.假设这是您要设置条件的行,它将首先评估 sessionToken,如果第一部分为真,它只会在“&&”之后到达 JSX 代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.