Извините, друзья, что спросили это снова. Я нашел пару решений для вопроса. Но они меня очень смутили. Я просто хочу попросить элегантный способ сделать это. Как вы понимаете по названию, у меня есть проблема с маршрутизацией на реакции. Позволь мне объяснить.
У меня есть кнопка с именем Login
. После того, как я нажал на кнопку, я сделал логи c, затем я хочу перенаправить в другое представление.
Login.jsx (только часть истории)
import { withRouter } from "react-router";
.
.
.
.
const {history} = this.props;
if (history) history.push("/home");
.
.
.
.
export default (withRouter(Login));
Приложение . js (ограниченная часть)
import {withRouter} from 'react-router';
import {BrowserRouter as Router, Route, Switch} from "react-router-dom";
.
.
.
.
.
<div className={'container-fluid'}>
<Router>
<Route path="/login" exact component={Login}/>
{(showMe && !pathLogin) &&
<Header maximize={maximize}/>
}
{(showMe && !pathLogin) &&
<div className="row h-100">
<Sidebar maximize={maximize}/>
<Switch>
<Route path="/home" exact component={Home}/>
<Route path="/somepage" exact component={Somepage}/>
</Switch>
</div>
}
</Router>
</div>
.
.
.
.
export default (withRouter(App));
Эта структура работает нормально. Когда я запускаю приложение, страница входа появляется в первом состоянии. Затем я нажимаю кнопку входа, путь к браузеру меняется, но вид не отображается. Если я нажимаю кнопку браузера refre sh после входа в систему. Рендеринг страницы правильно. После этого в следующий раз, пока я не нажму на кнопку refre sh в браузере, все работает нормально. Если кто-то даст мне совет, я буду очень признателен.