2017-03-20 19 views
2

反応する親コンポーネントを作成しました。ユーザーが2つのオプションのいずれかをクリックすると、別の子コンポーネントがレンダリングされます。アクティブなクラスを選択したアイテムに追加する反応

どのオプションが選択されているかによって、activeクラスを追加します。

以下のコードを参照してください。

私は多くのアプローチを取ってきましたが、私はそれを理解できなかったので、質問のためにそれらを取り除きました。

class Test extends Component { 

    constructor(props) { 
     super(props); 

     this.state = { 
      currentView: 'one' 
     }; 

     this.showOne = this.showOne.bind(this); 
     this.showTwo = this.showTwo.bind(this); 
    } 

    showOne() { 
     this.setState({ 
      currentView: 'one' 
     }); 
    } 

    showTwo() { 
     this.setState({ 
      currentView: 'two' 
     }); 
    } 

    render(){ 
    ...... 
     <p className="one" onClick={this.showOne}>One</p> 
     <p className="two" onClick={this.showTwo}>Two</p> 
    ...... 
    } 
} 

答えて

1

このようなものをお探しですか?

<p className={this.state.currentView === 'one' ? 'one active' : 'one'} onClick={this.showOne}>One</p> 
<p className={this.state.currentView === 'two' ? 'two active' : 'two'} onClick={this.showTwo}>Two</p> 
+1

thatsです。 muchas gracias hombre! :-) –

+1

正解とマークしてください;) – Phil

+0

ES6のテンプレートリテラルを使用することができます: '' 'className = {' one $ {this.state.currentView === 'one'? 'active': ''}} '' '、繰り返される' one'クラスを避ける – Komo

関連する問題