2017-10-24 11 views
2

私はreact router v4を使用していて、ユーザーがどのルートをクリックしていてもログインページに移動していない。ログイン時に直前のパスにリダイレクトする - React Router v4

が、ログインした後、彼は、私は以下のコードを使用してルートの2のためにそれを行うために管理し、これが最良の方法であるかどうかわからなかったログイン

前に彼がアクセスしようとしたのと同じページにリダイレクトされますこれを行うには

これは正しく動作しますが、ここでは同じコードを何度も何度も繰り返していきたいと思います。これを行うには良い方法がありますか?

ログアウトした後、何も表示されず、ログインページを表示したかったのです。私は以下の行も追加したので、ユーザーがログアウトするとすぐにログインページが表示されます。

<Route path="/login" component={Login} /> 
     <Route path="/logout" component={Login} /> 

しかし、もう一つの問題があります - >それは(まだ「/ログアウト」としてルートを示す)ログインコンポーネントを、表示していますが、それは、フォームにログインするために私を持ち帰る後にログアウト(今回のルートは「/ログインですが、 ')、このルートからログインするとダッシュボードが表示されます。さて、なぜそれが起こっているのですか?

あなたはコンポーネントPrivateRouteRouteをラップするために作成し、使用することができます。このexample続いルータ

答えて

1

反応し、私はまだについての勉強として、この上でいくつかの助けに感謝するであろうことは、認証を必要とするルートを必要なとき。

これは例のコンポーネントコードです。

const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route {...rest} render={props => (
    fakeAuth.isAuthenticated ? (
     <Component {...props}/> 
    ) : (
     <Redirect to={{ 
     pathname: '/login', 
     state: { from: props.location } 
     }}/> 
    ) 
)}/> 
) 
関連する問題