2017-02-19 102 views
1

我有我的React應用程序看起來像使用react-router如下的東西的情況。我希望users/:userId端點的索引重定向到另一個包含:userId參數的端點。什麼是這樣做的好方法?從currentUser開始的用戶現在將返回null,因爲代碼僅在加載App時開始執行一次,用戶尚未通過身份驗證。我猜測我需要強制react-router重新載入歷史記錄和某些變量,或者改變我進行身份驗證時的順序?React路由器 - 如何IndexRedirect動態路由

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/1重定向到/users/1/profile/users/2/users/2/profile,你可以簡單地用:userId取代${currentUser().id}

所以您的代碼將是這樣的:

<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> 

因爲重定向是在路由:userId:的情況下,你可以你的目標路線相對簡單的定義。

+0

這樣做,謝謝!從反應路由器文檔看來,它只接受絕對路徑。 – writofmandamus