2016-12-15 23 views
1

私はかなり単純なケースです。ログインしているかどうかに基づいて、インデックスページを/ dashboardまたは/ loginにロードする顧客をリダイレクトする必要があります。問題は、onEnterハンドラが毎回2回呼び出されていることと、なぜそれが不思議なのかということです。ここに私のコードです:リアクタールータOnEnterフックが2回呼び出されました

ReactDOM.render(
<div> 
    <Provider store={ store }> 
    <Router history={ history }> 
     <Route path="/" component={ App }> 
      <IndexRoute onEnter={ requireAuth }/> 
      <Route path="/login" component={ Login } /> 
      <Route path="/dashboard" component={ Dashboard } /> 
     </Route> 
    </Router> 
    </Provider> 
</div>, 
document.getElementById('root')); 

そして別のバージョンです。問題は両方の点で存在します。

ReactDOM.render(
<div> 
    <Provider store={ store }> 
    <Router history={ history }> 
     <Route path="/" component={ App }> 
      <IndexRedirect to="/counter" /> 
      <Route path="/login" component={ Login } /> 
      <Route path="/counter" component={ Counter } onEnter={ requireAuth } /> 
     </Route> 
    </Router> 
    </Provider> 
</div>, 
document.getElementById('root')); 
+0

私はあなたの問題を解決するかどうかはわかりませんが、ユーザーが認証され、適切なコンポーネントを表示したり、別のコンポーネントにリダイレクトするかどうかをチェックするHOCの各コンポーネントをラップしようとします。しかし、onEnterを使用する場合は、それを調べる。 – magnat

+0

Appコンポーネントに 'onEnter'メソッドを配置します。 – Vikramaditya

答えて

-1

あなたのルートをリファクタリングしてみはこの

<Provider store={ store }> 
    <Router history={ history }> 
     <Route path="/" component={ App }> 
      <IndexRedirect to="counter" /> 
      <Route path="login" component={ Login } /> 
      <Route path="counter" component={ Counter } onEnter={ requireAuth } /> 
     </Route> 
    </Router> 
</Provider> 

が好きな私は、ルート/counterがあなたのAppコンポーネントを再度呼び出して、再度onEnterを求めてだと思います。

+0

動作しません。変化なし – user2080579

3

理由がわかりました。これはreact-router-redux v4.0.7のバグです。ログされた問題がhereです。修正がマージされるまで、v4.0.6へのダウングレードにより修正されます。

関連する問題