Я разрабатываю веб-приложение ReactJS с компонентом маршрута. На сайте есть страница входа и панель инструментов. На приборной панели есть панель навигации и основной раздел.
App.js
class App extends React.Component {
render() {
return (
<div style={{height: "100%"}} className="App">
<Router>
<Switch>
<Route path="/" exact strict component={Dashboard}/>
<Route path="/login" exact strict component={Login}/>
</Switch>
</Router>
</div>
);
}
}
Dashboard.js
class Dashboard extends Component {
state = {
sideDrawerOpen: false,
redirect: false
};
drawerToggleClickHandler = () => {
this.setState((prevState) => {
return {sideDrawerOpen: !prevState.sideDrawerOpen};
});
};
render() {
return (
<div style={{height: "100%"}} className="App">
<Toolbar drawerClickHandler={this.drawerToggleClickHandler}/>
<main style={{marginTop: '63px'}}>
<div>
<Switch>
<Route exact path="/" render={
() => {
return (<div>
Welcome home about
</div>);
}}/>
<Route exact path="/about" render={
() => {
return (<div>
Welcome About
</div>);
}
}/>
</Switch>
</div>
</main>
</div>
);
}
}
toolbar.js
class Toolbar extends Component {
constructor(props) {
super(props);
this.state = {
loggedIn: false,
redirect: false
};
this.logoutClickHandler = this.logoutClickHandler.bind(this);
}
loginHandle() {
this.setState(prevState => ({
loggedIn: !prevState.loggedIn
}))
}
logoutClickHandler() {
this.setState(prevState => ({
loggedIn: !prevState.loggedIn
}));
// console.log("Logout clicked");
sessionStorage.setItem('userData', '');
sessionStorage.clear();
this.setState({redirect: true});
}
componentDidMount() {
if (sessionStorage.getItem('userData')) {
console.log("User logged");
} else {
this.setState({redirect: true});
}
}
render() {
if (this.state.redirect) {
return (<Redirect to={'/login'}/>);
}
return (
<header className="toolbar">
<nav className="toolbar__navigation">
<div className="toolbar__logo">
<NavLink to="/" exact strict>The Logo</NavLink>
</div>
<div className="spacer"/>
<div className="toolbar__navigation-items">
<ul>
<li>
<NavLink to="/about" activeStyle={
{color: 'green'}
}>About</NavLink>
</li>
<li>
<Link to={'/'} onClick={this.logoutClickHandler}>Salir</Link>
</li>
</ul>
</div>
</nav>
</header>
);
}
}
Рабочий процесс заключается в следующем: пользователь вошел на страницу входа и перенаправил на панель мониторинга. Это прекрасно работает, но я ожидаю, что когда я нажму на NavLink «О программе» в главном разделе панели мониторинга, отобразит страницу, но ничего не произошло.