当前位置: 首页 > 知识库问答 >
问题:

对未按预期工作的路由器做出反应

乐正乐湛
2023-03-14

我正在构建一个基本的react-login应用程序,用于教育目的,并使用React-router的onEnter prop功能验证一条路由

import axios from 'axios';    

var Authentication = (nextState, replace, callback) => {
    axios.get('/api/getuser')
    .then((res) => {
        if(res.data != '') {
          replace('account/wall')
        }
        callback()
    })
    .catch((err) => {
        callback()
    })

}

export default (
  <Route component={Root}  >
      <Route path='/' component={Home} onEnter={Authentication}/>
      <Route path='/login' component={Login} onEnter={Authentication}/> 
      <Route path='/signup' component={Registration} onEnter={Authentication}/> 
      <Route path='/account/wall' component={Wall}/>
      <Route path='*' component={Notfound} />
  </Route>

);

一切都按预期工作,但我不明白为什么路由器会在一眨眼的时间内渲染Home组件,然后在我登录后尝试/路由时将路由替换为/Account/wall?如果我登录后尝试/login/signup,也会发生同样的事情。,有办法修复这种行为吗??

我已经尝试通过在componentWillMount方法中对用户进行身份验证来解决这个问题(这不是我猜想的反应方式),方法是呈现空

因此,如果用户在没有任何中间件呈现的情况下进行身份验证,我只想呈现/account/wall。我能做什么??


暂时还没有答案

 类似资料:
  • 我有自定义控制器和spring应用程序,其配置如下: 似乎对于一个一致的用户来说,它工作得很好。但是如果我已经授权(使用oauth2),并且我的会话(或令牌)过期了->spring尝试将我重定向到登录页面。 有趣的是,内置endpoint按预期工作,即使会话过期。

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里