简体   繁体   English

当用户未登录时显示导航栏。希望导航栏在用户拥有令牌后呈现

[英]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.

相关问题 UseEffect 在用户登录时更新导航栏? - UseEffect to update navbar when user is logged in? 为登录用户显示不同的导航栏 - Display different navbar for logged user React - 用户登录后如何在导航栏中隐藏注册/登录? - React - How to hide register/login in navbar once a user has logged in? Angular:登录后在导航栏中显示元素 - Angular : displaying elements in navbar after logged in 如果用户登录或未登录,实现条件导航栏的策略 - Strategies to implementing a conditional Navbar if a user is logged in or not 如何仅在用户登录时运行 ajax。(Django) - How to run ajax only when user is logged in. (Django) Vue.js:无论用户是否登录,导航栏上的显示/隐藏按钮均基于Vuex商店状态 - Vue.js: Show/Hide buttons on navbar based on Vuex Store state when the user is logged in or not 根据用户是否登录来显示不同导航栏的方法是什么? - What are the ways to show different navbar based on if the user logged or not? 根据用户是否登录在 React 中更改 Navbar 值的正确方法是什么? - What is the correct way to change Navbar values in React based on if user is logged in? 当用户已经登录 ESJ NodeJs 时,我想将我的导航栏从登录更改为注销 - I want to change my navbar from login to logout when the user is already login ESJ NodeJs
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM