2017-01-31 7 views
0

私はナビゲーション要素用の簡単な反応コンポーネントを作成しようとしています。これはこれまで私がこれまでやっていた方法です。React:クラスとそれに加えて変数クラスの使い方

これは本当に簡単な質問ですが、classNameに変数値を追加するにはどうすればよいですか?この例では、すべての要素は、クラスitemを持っており、さらにクラスにactive

export default class Example extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { activeTab: 'Initial' }; 
     this.setActiveClassOnTab = this.setActiveClassOnTab.bind(this); 
     this.handleChangeTabs = this.handleChangeTabs.bind(this); 
    } 

    setActiveClassOnTab(tab) { 
     return this.state.activeTab === tab ? 'active' : ''; 
    } 

    handleChangeTabs(event) { 
     this.setState({ activeTab: event.target.textContent }); 
    } 

    render() { 
     return (
      <div className="ui compact menu"> 
       { this.props.menu.map((item) => { 
        return (<a className="item { this.setActiveClassOnTab(item.title) }" onClick={ this.handleChangeTabs } key={ item.title}>{ item.title }</a>); 
       }) } 
      </div> 
     ); 
    } 
} 

答えて

0

ES6 template literalsはここで素敵な、透明な溶液を次のようになります。

<a className={`item ${this.setActiveClassOnTab(item.title)}`} onClick={ this.handleChangeTabs } key={ item.title}>{ item.title }</a> 
0

文字列テンプレートを取得する最初の要素は、あなたが探しているものです:あなたは${}の間に置く

<a className={`item ${this.setActiveClassOnTab(item.title)}`} /> 

何になります実行時に評価され置換されるため、文字列を連結することなく、探しているクラスを動的に挿入することができます。

+0

これはしかしリテラルテンプレート周りの中括弧が必要になります。投稿後 – Timo

+0

が編集されました。編集:P – ospfranco

+0

このコードがOPに役立つ理由の説明を追加してください。これにより、今後の視聴者からの回答が得られます。詳細については、[回答]を参照してください。 –

関連する問題