2017-08-28 36 views
0

で無限ループを引き起こすフォーカス取得時、私はこの例に従っ:リアクト・ルータを、認証

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

私は、彼らがloggedInされた後loginルータをナビゲートするために、ユーザーを防ぎたいです。

私はrequireAuthonEnterloginルーターに入れようとしました。

ただし、初めてユーザーがページにアクセスすると、loggedInでなくなり、無限ループが発生します。

私の場合はどうすればループから抜け出すことができますか?ここ は私のコードです:

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

実装を共有することは可能でしょうか? App.jsまたは 'render'関数がおそらくあります。 – keshavDulal

+0

@keshavDulal更新 – novaline

答えて

0

は、なぜあなたはloginページにrequireAuthを追加しようとしていますか?

は、私はあなたが認証されたユーザーのために、このページへのアクセスを防止したい場合は、あなたの onEnterは、この

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

と何よりものようにするべきだと考えています。

+0

うん。ポイントは、ユーザーがロギングしていないときです。それは常に '/ login'にリダイレクトされ、無限ループを引き起こします。私はあなたの質問を – novaline

+0

@novalineに更新しました、なぜここに 'replace({pathname: '/ login'})'を追加しましたか?私はこれをここから取り除くべきだと思うし、あなたが望むようにすべてがなるだろう – Yozi

関連する問題