2017-01-02 110 views
2

在我的反應應用程序中用於路由目的的路由器。鏈接到動態活動類?

礦路由在給定的方式定義:

<Route path={food/:cuisine/:pageNo} component={foodList} 

和我的導航欄有如下導航:

<Link to={"/food/italian/1"} activeClassName="active">Italian</Link> 
<Link to={"/food/indian/1"} activeClassName="active">Indian</Link> 

但是當訪問網頁沒有。 2(「/ food/indian/2」),那麼myActive類的navBar不會顯示。 如果有任何其他方法來解決這個問題,那麼它會很好。

謝謝。


PS:我不想把所有的條件一樣,因爲該應用程序已超過15個不同的菜餚

if(this.props.params.cuisine=="Indian){ 
    //then add .active in my Link to class 
} 

=======

+0

嘗試ClassName而不是activeClassName。 –

+0

@ Jean-maxime Bouloc如果你知道答案,那麼你可以編輯這個問題。把一個空間或刪除一個額外的東西不會解決這個問題。如果你想獲得太多的聲望,那麼就開始回答問題,而不是在聯盟中放置一個額外的空間。 –

+0

你嘗試過使用'activeStyle'嗎? [這裏](https://github.com/reactjs/react-router-tutorial/tree/master/lessons/05-active-links#active-styles) –

回答

1

只是使用條件的javascript給定的情況。

喜歡:

if(this.props.params.cuisine=="Indian){ 
    //then add .active in my Link to class 
} 

將完全爲你工作。 activeClass將比較整個路線路徑,如果它是真的,那麼他們將添加活動類。

替代選項:如果你可以使用splice函數創建一個常量值來獲得ur的後綴url。

然後創建兩個變量。

例如:

var indianPrefix= "/food/indian/"+ urlSuffix; 
var italianPrefix= "/food/italian/"+ urlSuffix; 

然後使用:

<Link to={italianPrefix} activeClassName="active">Italian</Link> 
<Link to={indianPrefix} activeClassName="active">Indian</Link> 

錯誤:通過使用這種方法在你點擊將會登陸在同一頁上始終標籤。

謝謝。