2017-07-30 34 views
1

反応ルータ4.xと互換性のあるthe next (5.0.0) version react-router-reduxを使用しています。2回リダイレクトするのを避けるには(react-router-redux)?

私のアプリは/login/homeの2つのページを持っています。

ユーザーがページが存在しない場合は、/loginにページをリダイレクトしようとしています。私は<Redirect to="/login" />を削除し、ユーザーがすでにログインあれば、彼はページ/homeを開いたとき、アプリは良いですが、直接ホームページに行く場合、これは私のコード

import { Route, Redirect } from 'react-router-dom'; 
import { ConnectedRouter, routerMiddleware, push } from 'react-router-redux'; 

ReactDOM.render(
    <Provider store={store}> 
    <ConnectedRouter history={history}> 
     <div> 
     <Route path="/login" render={() => (
      isSignedIn ? <Redirect to="/home" /> : <Login /> 
     )}/> 

     <Route path="/home" component={Home} /> 

     <Redirect to="/login" /> 
     </div> 
    </ConnectedRouter> 
    </Provider>, 
    document.getElementById('root') 
); 

です。

<Redirect to="/login" />で、ユーザーがページ/homeを開くと、アプリはまず/loginにリダイレクトしてから/homeに戻ります。

このリダイレクトを2回回避するにはどうすればよいですか?おかげ

+0

ホームにルートを設定してからログインにリダイレクトするのはなぜですかホームコンポーネント内からログインしていないのです –

+0

こんにちは@ShubhamKhatri、私はそれを手に入れませんでした。ありがとう –

+0

ホームにログインしているか確認するこの質問を見るhttps://stackoverflow.com/questions/44127739/programatically-routing-based-on-a-condition-with-react-router/44128108#44128108とリダイレクト あなたは '' –

答えて

2

最初に一致するルートがあなたのケースで何が起こるレンダリングされていないと何も

import {Switch} from 'react-router'; 

ReactDOM.render(
    <Provider store={store}> 
    <ConnectedRouter history={history}> 
     <Switch> 
     <Route path="/login" render={() => (
      isSignedIn ? <Redirect to="/home" /> : <Login /> 
     )}/> 

     <Route path="/home" component={Home} /> 

     <Redirect to="/login" /> 
     </Switch> 
    </ConnectedRouter> 
    </Provider>, 
    document.getElementById('root') 
); 

されるようにSwitchを使用することでも一致/homeかかわらず、Redirectも実行されていることです。

+0

「」を思い出してくれてありがとう! –

+0

私のコメントで述べたように、ホームコンポーネントにログインするようにリダイレクトするロジックを維持できます。 https://stackoverflow.com/questions/44127739/programatically-routing-based-on-a-condition-with-react-router/44128108#44128108を参照してください。 –

関連する問題