Вот мое решение, оно не совсем решение, но оно даст вам основную идею о том, как это реализовать.
Идея состоит в том, чтобы поместить компонент Login в app.js и условно отобразить его, если пользователь вошел в систему.
Вам нужно будет передать функцию обработчика компоненту входа в систему, с помощью которого вы сможете контролировать состояние app.js .
Когда вход будет успешным, вы можете показать компонент Навигация и Sidemenu.
import { Fragment } from "react";
import Login from "path/to/login";
class App extends Component {
state = { isLoggedIn: false };
loginHandler = () => {
this.setState({
isLoggedIn: true
});
};
render() {
return (
<div>
<div className="main-wrapper">
{isLoggedIn ? (
<Fragment>
<SideMenu />
<Navigation />
</Fragment>
) : (
<Login loginHandler={this.loginHandler} />
)}
</div>
</div>
);
}
}
Также вам нужно написать отдельный файл роутера, который будет содержать основное приложение.Используется для отображения компонента app при переходе к /
import React from 'react';
import { HashRouter, Route } from 'react-router-dom';
import App from './app';
const MainRoute = () => (
<HashRouter>
<Route path="/" component={App} />
</HashRouter>
);
export default MainRoute;