2017-05-17 24 views
0

active NavItem要素の背景色をインラインCSSを使用して緑色に変更したいと思います。私はTypeScript 2.2、React、React Bootstrap、React Router Dom、React Router Bootstrapを使用しています。これは可能ですか、CSSクラスを作成する必要がありますか?React TsxとReact Bootstrap - Active NavItemのインラインCSS

https://react-bootstrap.github.io/components.html#navigation

現在のコード:

const tabStyle: React.CSSProperties = { 
    backgroundColor: 'green' 
} 

return (
    <main> 
     <div> 
      <Nav bsStyle="tabs" activeKey="1"> 
       <LinkContainer to="/about"> 
        <NavItem eventKey="1">Om</NavItem> 
       </LinkContainer> 
       <LinkContainer to="/facts"> 
        <NavItem eventKey="2">Fakta</NavItem> 
       </LinkContainer> 
      </Nav> 
     </div> 
    </main> 
); 
+0

NavのCSSプロパティを変更するには、クラス 'nav'にカスタムCSSを書く必要があります。通常のブートストラップクラス参照を経て、カスタムスタイルを追加してインポートします。それは動作するはずですが、Navはカスタムスタイル属性を使用するオプションを提供していないため、インラインCSSを使用して行うことはできません。 –

答えて

1

あなたは私の知る限り小道具は不変であることを確認し、ほかにできるよう小道具を使用していません。あなたはstateに見て、backGroundColorとしてではなくインラインスタイリングのために、それはこの

<div style={{color: condition ? "red": "green"}}> </div> 

EDITのように見えることができることを使用する場合があります:NavItemためのもの何スタイリングがないように思えます。 hereを参照してください。あなたはそれのためにCSSを使用する必要があります。 Change the <a> element class in react-bootstrap NavItem

+0

NavItemにはスタイルプロパティがありません。 'span'や' div'でラップしようとすると、NavItemはnavbarの外に現れます。 – Ogglas

+0

@Ogglas CSSを使わなければならないようです。私の編集を参照してください。 –

+0

最も単純な選択肢のようです – Ogglas

0

このように解決しましたが、これは最高の解決策ではなく、うまく機能します。

const css = ` 
    .route-list .nav-tabs>li.active>a { 
     background-color: green; 
     color: white; 
    } 
` 

<main> 
    <div className="route-list"> 
     <style>{css}</style> 
     <Nav bsStyle="tabs" activeKey="1"> 
      <LinkContainer to="/about"> 
       <NavItem eventKey="1">Om</NavItem> 
      </LinkContainer> 
      <LinkContainer to="/facts"> 
       <NavItem eventKey="2">Fakta</NavItem> 
      </LinkContainer> 
     </Nav> 
    </div> 
</main> 
関連する問題