2017-02-19 8 views
1

私のリアクションアプリには、react-routerを使用して次のような状況があります。私はusers/:userIdエンドポイントのインデックスを:userId paramsを含む別のエンドポイントにリダイレクトします。これを行う良い方法は何ですか?現在、currentUserのユーザーは、コードがアプリケーションがロードされたときに最初に1回だけ実行されるため、ユーザーはまだ認証されていないためnullを返します。私はreact-routerに履歴や特定の変数を再ロードさせたり、認証の順番を変えたりする必要があるだろうと推測しています。リアクタールータ - ダイナミックルートへのインデックスリダイレクト方法

routes.js

{ /* Routes requiring login */ } 
<Route onEnter={requireLogin}> 
    <Route path="users" component={Users}> 
    <Route path=":userId" component={User}> 
     <IndexRedirect to={`/users/${currentUser().id}/profile`} /> 
     <Route path="profile" component={UserProfile} /> 
     <Route path="settings" component={UserSettings} /> 
     <Route path="activity" component={UserActivity} /> 
    </Route> 
    </Route> 
</Route> 

答えて

3

私はそれを正しく理解し、あなたが/users/2/profile/users/1から/users/1/profile/users/2にリダイレクトしたい場合は、単に:userId${currentUser().id}を置き換えることができます。リダイレクトはあなたが単にあなたの目標経路の相対を定義することができ、経路:userId:のコンテキストにあるので

<Route onEnter={requireLogin}> 
    <Route path="users" component={Users}> 
    <Route path=":userId" component={User}> 
     <IndexRedirect to="profile" /> 
     <Route path="profile" component={UserProfile} /> 
     <Route path="settings" component={UserSettings} /> 
     <Route path="activity" component={UserActivity} /> 
    </Route> 
    </Route> 
</Route> 

だからあなたのコードでしょうが、このようになります。

+0

これは、ありがとう!反応ルータ文書からは、絶対パスだけが受け入れられたように見えます。 – writofmandamus

関連する問題