Я создаю веб-сайт с 3 разными страницами (Home, Login и User), и я использую компонент Switch в React Router для перемещения между страницами. Проблема, с которой я сталкиваюсь, заключается в том, что когда я попадаю на страницу пользователя, я все еще вижу логин в списке навигации, как показано на изображении ниже Теперь я хочу, чтобы кнопка входа была удалена, как только я доберусь до страницу пользователя или переключите текст на «Выйти». У вас есть предложения, как это можно сделать? Я также включил код, чтобы он был более понятным.
Заголовок (панель навигации). Компонент
import React from "react";
import { Link } from "react-router-dom";
import './App.css';
const Header = () => (
<header >
<nav className='topnav'>
<ul>
<li>
<Link to="/Login">Login</Link>
</li>
<li>
<Link to="/">Home</Link>
</li>
</ul>
</nav>
</header>
);
export default Header;
Компонент входа
const Login = () => (
<Switch>
<div className="LoginWrap">
<Route exact path="/Login" component={LoginForm} />
<Route path="/Login/:number" component={User} />
</div>
</Switch>
);
export default Login;
, а пользовательский компонент здесь .
Изменить: основываясь на ваших предложениях, я попытался сделать это:
<Link to="/Login">
{
console.log("Header localStorage.getItem isLoggedIn is :" + localStorage.getItem("isLoggedIn"))
}
{
localStorage.getItem("isLoggedIn") === true? "Logout" : "Login"
}
</Link>
Тем не менее, он все время показывал «Войти».
Понятия не имею, почему. Несмотря на то, что в консоли он правильно печатает «Header localStorage.getItem isLoggedIn is: true» и «Header localStorage.getItem isLoggedIn is: false», когда вы входите через форму входа, а затем нажимаете кнопку Link в заголовке
Еще более странным было то, что когда я менял код на
localStorage.getItem("isLoggedIn") ? "Logout" : "Login"
, он всегда показывает «Выход»