reactjs - 反应路由器需要一些时间来重定向/渲染
问题描述
为什么?
没有路由器,它会立即呈现,但使用路由器,在页面刷新时呈现登录组件需要 5 秒。
ReactDOM.render(
<Provider store={store}>
<PersistGate loading={()=>Loading()} persistor={persistor}>
<Router history={hist}>
<Route path="/admin" render={props => <AdminLayout {...props} />} />
<Route path="/rtl" render={props => <RTLLayout {...props} />} />
<Route path="/login" component={Login} />
<Route path="/apps" render={props => <AppsLayout {...props} />} />
<Redirect from="/" to="/login" />
解决方案
试试这个。
<Redirect from="/" to="/login" />
<Switch>
<Route path="/admin" render={props => <AdminLayout {...props} />} />
<Route path="/rtl" render={props => <RTLLayout {...props} />} />
<Route path="/login" component={Login} />
<Route path="/apps" render={props => <AppsLayout {...props} />} />
</Switch>
如果您尝试在每次访问您的应用程序时呈现登录组件,我建议您使用不同的方法。我建议你在你的 中定义一个状态变量isLoggedIn: false
,app.js(or whatever your landing page is)
然后你可以在渲染中测试它的值。
if(!this.state.isLoggedIn) {
this.props.history.push('/login');
} else {
//whatever you want
}
或者
if(this.state.isLoggedIn) {
return <Redirect to='/login'/>
} else {
return <HomePage/>
}
您希望如何实现您所追求的目标。
推荐阅读
- kubernetes - Kubernetes ingress nginx 重定向域,也适用于所有重定向域的子域
- android - Android创建一个圆角的自定义按钮
- php - Laravel 缓存问题
- python - 访问冲突写入位置 0x0000000C
- css - 为什么需要将生成的两个类名(root 和 disabled)应用到 DOM 以使其工作?
- java - 使用 RedisTemplate 执行 Lua 脚本永远不起作用
- kotlin - SLF4J:W/System.err:SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”
- python - 如何使用字典中的某个键访问每个元素
- r - 从excel读取日期列到r时设置自己的年月
- python - 熊猫:value_counts 进入数据框