React-Router v5历史记录.push不会触发组件

时间:2020-02-11 13:39:16

标签: javascript reactjs react-router

对不起,我的朋友们再次提出这个问题。我找到了解决该问题的方法。但是他们让我很困惑。我只想问一下优雅的方法。如您所了解的那样,我对React路由存在问题。让我解释。

我有一个名为Login的按钮。单击按钮后,我做了一些逻辑工作,然后我想重定向到另一个视图。

Login.jsx (仅历史部分)

  import { withRouter } from "react-router";
.
.
.
.
  const {history} = this.props;
  if (history) history.push("/home");

.
.
.
.
export default (withRouter(Login));

App.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));

此结构运行良好。当我运行该应用程序时,登录页面会显示为第一状态。然后,我单击登录按钮,浏览器路径更改,但视图未呈现。如果我在登录后按浏览器刷新按钮。页面正确呈现。下次之后,直到我单击浏览器上的“刷新”按钮,一切正常为止。如果有人给我建议,我将不胜感激。

0 个答案:

没有答案