2015-06-22 19 views
2

我建設有反應,反應路由器一個網站,我有兩個不同類型的路線,像波紋管的例子:有沒有辦法在使用react-router時將params限制在某些值?

<Route name="products" path="/:type/*" handler={ ProductList } /> 
 
<Route name="generic-template" path="/*" handler={ TemplatePage } />

所以我的產品頁面需要的類型參數,可以是A,B或C,我希望我訪問的任何鏈接只有在類型爲A,B或C時才能匹配我的產品路線。舉例:

  • /type-A/bla -bla-filter - > ProductList應該加載
  • /B型/其他-PARAMS - >產品應加載
  • /服務/信息 - > TemplatePage應該加載

但以我現在,任何網頁是由產品的路線,因爲匹配該類型僅作爲斜線後面的第一個字符串匹配。作爲一種變通方法,我想換我產品列表組件爲單獨包裝部件,只是發送類型參數沿着這樣的:

var TypeAWrapper = React.createClass({ 
 
    render: function() { 
 
    return (
 
     <ProductList params={{ splat: this.props.params.splat, type: 'A' }} /> 
 
    ); 
 
    } 
 
}); 
 

 
var TypeBWrapper = React.createClass({ 
 
    render: function() { 
 
    return (
 
     <ProductList params={{ splat: this.props.params.splat, type: 'B' }} /> 
 
    ); 
 
    } 
 
});

,然後我用了不同的路線爲每類產品與靜態匹配。

有沒有人知道更好的解決方案呢?

回答

1

根據this issue公認的解決方案是「使三個使用相同處理程序的路線」。

+0

謝謝,這意味着沒有其他方式使用正則表達式或類似的解決方案。不幸的是,我不能直接使用相同的處理程序,因爲我需要顯式地將我的類型參數傳遞給組件。這就是爲什麼我需要這些包裝。 –

相關問題