2016-09-19 216 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还是子类。