Javascript React Router |仅在页面刷新时加载组件

Javascript React Router |仅在页面刷新时加载组件,javascript,reactjs,react-router,page-refresh,Javascript,Reactjs,React Router,Page Refresh,我正在使用React路由器v4。我的场景是每次页面刷新时我都有呼叫登录页面(浏览器刷新单击或F5) 路线 <Router history={history}> <div> <Spin spinning={this.props.isloading}> <Switch> <Route path="/login" component={Login} />

我正在使用
React路由器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} />

在根组件中创建一个
componentDidMount
方法,该方法将负责通过将用户重定向到
/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>
const Refresh=({reload,children})=>reload?子项:空;
...
基于:


这发生在我身上,问题是我正在从react Router dom导入路由器,而不是将浏览器路由器作为路由器导入
窗口。addEventListener('beforeunload',logoutTheUser)即使我切换页面,它也会被调用。我只需要在页面刷新时打电话,不需要更改菜单。我想我回答了你的问题;然而,我真的不明白为什么你会想要检测用户是否刷新页面。如果我重新加载了一个页面,该页面显示了一些不同的内容,不是因为有更新,而是因为我单击了“刷新”,我觉得这种行为会在某种程度上减少用户体验。我在route中添加了这一点,但它并没有重定向到loginsorry,我误解了。我以为你想改变自己的路线,如果页面被重新加载。要执行重定向,您只需从React Router
中呈现重定向组件,我如何在每次页面刷新时使用它?每次只需呈现该片段。如果页面已经刷新,它只会有条件地呈现重定向