React-router,onEnter导致带有身份验证的无限循环

时间:2017-08-28 12:00:23

标签: reactjs react-router

我按照这个例子:

  

https://github.com/ReactTraining/react-router/blob/v3/examples/auth-flow/app.js

我希望阻止用户在login之后导航loggedIn路由器。

我尝试将requireAuth置于onEnter路由器的login

但是,当用户第一次访问该页面时,它们不是loggedIn,并且会导致无限循环。

在我的情况下如何摆脱循环? 这是我的代码:

{
  path: 'login',
  component: Login,
  onEnter: (nextState, replace) => {
    if(!auth.loggined) {
      replace({
        pathname: '/login',
        state: {
          nextPathname: nextState.location.pathname
        }
      })
    } else {
      replace('/')
    }
  }
}

1 个答案:

答案 0 :(得分:0)

为什么要尝试将requireAuth添加到login页面?

我相信你的onEnter应该是这样的

if(loggedIn){
    replace({
      pathname: '/'
    })
}

仅此而已,如果您想阻止对经过身份验证的用户访问此页面。