2017-02-04 10 views
8

に反応し、ルータv3では、私たちは私がV4で同じことを行うことができますどのように知りたいこの反応ルータv4でアクティブリンクをどのようにスタイルすることができますか?

<div id="tags-container"> 
    {tags.map(t => 
     <Link 
     className="tags" 
     activeStyle={{ color: 'red' }} 
     to={t.path} 
     > 
     {t.title} 
     </Link> 
    )} 
    </div> 

ような何かを行うことができますスタイルのアクティブリンク

にactiveStyleとactiveClassNameを持っていましたか?

+0

R uはV4で同じことを使用した場合、作業エラーを取得したりないので、デフォルトでNavlinksがアクティブになって、??私は、これらは同じようにV4で動作すると思いますので。 –

+0

@Mayank Shukla:警告:未知のprop 'activeStyle'がタグ –

答えて

3

この例で反応し、ルータからV4 custom link documentationがそれを達成するのに役立ちます:

const OldSchoolMenuLink = ({ label, to, activeOnlyWhenExact }) => (
    <Route path={to} exact={activeOnlyWhenExact} children={({ match }) => (
    <div className={match ? 'active' : ''}> 
     {match ? '> ' : ''}<Link to={to}>{label}</Link> 
    </div> 
)}/> 
); 

は、だからあなたの場合には次のコンポーネントを作成できます。

const CustomLink = ({ activeStyle, children, className, to, activeOnlyWhenExact }) => (
    <Route path={to} exact={activeOnlyWhenExact} children={({ match }) => (
    <Link to={to} className={className} style={match && activeStyle}>{children}</Link> 
)}/> 
); 

をそして同じようにそれを使用します。

<div id="tags-container"> 
    {tags.map(t => 
     <CustomLink 
     className="tags" 
     activeStyle={{ color: 'red' }} 
     to={t.path} 
     > 
     {t.title} 
     </Link> 
    )} 
    </div> 
2

あなたはすべてが、まだ同じように動作しますreact-router V4

<div id="tags-container"> 
    {tags.map(t => 
    <NavLink 
     className="tags" 
     activeStyle={{ color: 'red' }} 
     to={t.path} 
    > 
     {t.title} 
    </NavLink> 
    )} 
</div> 
0

NavLinkでそれを行うことができます。しかし、反応ルータdom v4はLinkNavLink

import { NavLink as Link } from 'react-router-dom';と置き換えても問題ありません。注:a:activeのスタイルを設定することができますかactiveStyle={{color: 'red'}}

関連する問題