2016-09-19 161 views
0

我現在面臨的情況是,我有我的路由器工作正常進行以下配置所有可選參數:陣營路由器不匹配

<Route path="/" component={Blog}> 
    <Route path="list(/:category)(/:subcat)" component={ArticleList} /> 
    <Route name="article/:category(/:subcat)/:id" component={ArticlePage} /> 
</Route> 

但現在我被要求提高URL和刪除一些「 >所需的URL

博客/表/足球/世界盃 - - 從網址

當前URL不必要的」前綴>博客/足球/世界盃

博客/表/足球 - >博客/足球

博客/條/足球/ 10 - >博客/足球/ 10

所以我曾嘗試改變我的路線,以保持可選

所有參數
<Route path="/" component={Blog}> 
    <Route path="(/:category)(/:subcat)" component={ArticleList} /> 
    <Route name=":category(/:subcat)/:id" component={ArticlePage} /> 
</Route> 

有沒有一種方法可以像使用反應路由器描述的那樣匹配網址?

+0

您可以使用[''(https://github.com/ReactTraining/react-router/blob/master/docs/API.md#redirect)如果您需要保持目前的路線,但重定向到簡化版本。 – feychou

回答

0

你可以簡單地把它這樣

<Route path="blog" component={Blog}> 
    <IndexRoute component={ BlogComponent } /> 
    <Route path=":category" component={ ArticleCategoryList } /> 
    <Route path=":category/:subcat" component={ ArticleSubCategoryList } /> 
</Route> 

我已經前綴blog的路線。

  • IndexRoute將匹配/博客路線,它作爲索引路徑。
  • :category將匹配博客/足球博客/任何競技
  • :category/:subcat將同時匹配博客/足球/世界盃博客/足球/ 10

    你將不得不在這裏要小心,因爲這將匹配subcategoryid。 你可以寫一個函數/中間件來驗證路由的類型,不管是id還是子類。