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