2017-05-23 34 views
3

これは私が達成しようとしていることです:ユーザーがReactJSサイトの保護されたページにアクセスしようとすると、フラッシュメッセージでホームページにリダイレクトしたい"ログインしてください"またはそれに類するもの。どのように私は反応ルータv4でこれを達成するのですか?ここで私はこれまで持っているものです:<Home>コンポーネントにプロパティに記録され、その後、自宅のコンポーネントは、そのプロパティを見て、必要に応じてフラッシュメッセージをレンダリングすることができますが送信についてフラッシュメッセージのリダイレクト方法リアクションルータ4

<Router> 
<div> 
    <Switch> 
    <Route path="/" component={Home} /> 
    <Route 
     exact path="/source" render={() => (
     isAuthenticated() ? (
      <Source /> 
     ) : (
      <Home /> //I want to Redirect to the Home Page with a flash message if user is not logged in 
     ) 
    )} 
    /> 
    <Route path="/contact" component={ContactUs} /> 
    </Switch> 
</div> 
</Router>, 
); 

答えて

1

ここでは私のために働いた:私は反応ルータv4に付属のリダイレクトメソッドを使用しました。これにより、これを簡単に達成することができます。

<Route 
     exact path="/source" render={() => (
     isAuthenticated() ? (
      <Source /> 
     ) : (
      <Redirect 
      to={{ 
       pathname: '/', 
       state: 'Please sign in' 
      }} 
      /> 
     ) 
    )} 
    /> 

あなたはここにリダイレクトについての詳細を読むことができます:React Router v4 - Redirect

1

方法:

exact path="/source" render={() => (
    isAuthenticated() ? (
     <Source /> 
    ) : (
     <Home loggedIn={isAuthenticated} /> 
    ) 
)} 
+0

おかげトッドを。私はこの場合私のために働くもので質問に答えました。 –

関連する問題