react-router 在使用onEnter 时遇到了Maximum call stack

如下代码,我在root上使用onEnter 来判断用户是否已登录然后进行相应的跳转,跳转到主界面,或者登陆界面。但是这个地方会导致Maximum call stack size exceeded。

<Router history={browserHistory}>    <Route path='/' component={Main} onEnter={requireAuth}>
      <Route path='login' component={Login} />
    </Route></Router>requireAuth(nextState,replace,callback){    if(isLogined) {
         replace('/home');
    } else {
        replace('/login');
    }
    callback();
}

原因,主要是每次都会调用onEnter直到爆栈,解决方法可以通过在相应需要验证的route上添加onEnter进行验证。但这种需要每次添加感觉代码会不简洁,想知道有没有只在一个地方添加onEnter或者有什么更好的处理方法来避免重复添加onEnter的问题?


qq_遁去的一_1
浏览 576回答 1
1回答

炎炎设计

我每次遇到Maximum call stack size exceeded都是因为死循环,多写几个console.log,看看哪里在死循环
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript