繁体   English   中英

反应路由器 | 仅在页面刷新时加载组件

[英]React Router | load component only on page refresh

我正在使用React Router v4浏览器路由器 我的场景是我在每次页面刷新时调用登录页面(浏览器刷新点击或 F5)

路线

 <Router history={history}>
        <div>
          <Spin spinning={this.props.isloading}>
            <Switch>
              <Route path="/login" component={Login} />
              <Route path="/Dashboard" component={Dashboard} />
              <Route path='*' component={NotFound} />
            </Switch>
          </Spin>
        </div>
      </Router>

我需要在页面刷新时加载登录组件,所以我需要像下面这样的东西

<Refresh path="/login" component={Login} />

它发生在我身上,问题是我从 react-router-dom 导入Router而不是BrowserRouter 作为 Router

在您的根组件中创建一个componentDidMount方法,该方法将负责通过将用户重定向到/login/login您的用户。

然后为页面刷新添加一个事件侦听器,它将注销用户以进行任何页面刷新。

componentDidMount(){
    if(!userLoggedIn()){
        //redirect to login
        history.push("/login")
    }

    window.addEventListener('beforeunload', logoutTheUser);
    /* if you are not maintaining a session, you dont need this
      as user will be logged out automatically on page refresh.*/
}

只需执行以下操作:

const Refresh = ({reload, children}) => reload ? children : null;

...

<Refresh reload={performance.navigation.type === 1}>
    <Redirect to="/login"/>
</Refresh>

基于:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM