Полагаю, у вас есть способ определить, вошел ли ваш пользователь в систему или нет. Предположим, вы сохранили информацию в переменной isLoggedIn, после чего вы можете сделать следующее, чтобы скрыть навигацию, если пользователь не вошел в систему,
{ isLoggedIn && <Navigation /> }
Но как только ваше приложение расширится, я предлагаю вам сделать разные маршруты в зависимости от публичного / частного состояния.
- Создать файл PrivateRoute.js
import React, { Component } from 'react';
import { Redirect, Route } from 'react-router-dom';
import Navigation from "./components/Navigation";
class PrivateRoute extends Component {
render() {
// use your own logic here
const isLoggedIn = !!localStorage.getItem('token');
if (!isLoggedIn) {
return <Redirect to='/' />;
}
return (
<div>
<Navigation />
// your private route
</div>
}
}
export default PrivateRoute;
- создайте файл PublicRoute.js
import React, { Component } from 'react';
import { Redirect, Route } from 'react-router-dom';
class PublicRoute extends Component {
render() {
<div>
// your all public route
</div>
}
}
export default PublicRoute;
- Теперь просто включите их в свой основной файл
import React, { Component } from 'react';
import { BrowserRouter , Route} from "react-router-dom";
import { PublicRoute, PrivateRoute } from './routes';
import './App.css';
import Home from "./components/Home";
import Menu from "./components/Menu";
class App extends Component {
render() {
return (
<BrowserRouter>
<div>
<PublicRoute />
<PrivateRoute />
</div>
</BrowserRouter>
);
}
}
export default App;