2017-10-11 15 views
1

次のコードがあります。デフォルトでは、パトリオットはbtn-原色を青色にし、パッカーはデフォルトの色を白色にします。 2つのボタンの間で選択すると色が変わりますが、divの外側をクリックすると両方のボタンが白に変わります。本当にありがとうございます。私は絶対初心者です。classNameがdivの外をクリックすると削除されます

class something { 
    constructor(props) { 
     super(props); 
     this.state = { 
     clicked: false 
     }; 
    } 

    toggleView() { 
     this.setState({ 
     clicked: true 
     }); 
    } 
    render() { 
     var classRender = "btn-primary"; 
     classRender = this.state.clicked ? "btn-primary" : "btn-primary selected "; 
     return (
     <div> 
      <button 
      className={classRender} 
      type="button" 
      onClick={e => this.toggleView()} 
      > 
      Patriots 
      </button> 
      <button 
      className="btn-primary" 
      type="button" 
      onClick={e => this.toggleView()} 
      > 
      Packers{" "} 
      </button> 
     </div> 
    ); 
    } 
    } 

答えて

1

それはselectedクラスonClickでボタンを更新しますし、ちょっと

export default class Toggle extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      patriotsSelected : true 
     } 

     this.patriotsSelected = this.patriotsSelected.bind(this); 
     this.packersSelected = this.packersSelected.bind(this); 
    } 

    patriotsSelected(){ 
     this.setState({patriotsSelected : true}) 
    } 

    packersSelected(){ 
     this.setState({patriotsSelected : false}) 
    } 



    render() { 
     var patriotsClass = this.state.patriotsSelected ? "btn-primary selected" : "btn-primary"; 
     var packersClass = this.state.patriotsSelected ? "btn-primary" : "btn-primary selected"; 
     return (
      <div> 
       <button className={patriotsClass} onClick={this.patriotsSelected} > 
        Patriots 
       </button> 
       <button className={packersClass} onClick={this.packersSelected} > 
        packers 
       </button> 
      </div> 
     ); 
    } 
} 
+0

ねえ。ボタンを切り替えると、ソリューションが遅れます。また、divの外側をクリックするとクラスが削除されます。 – singha4086

+0

申し訳ありません私はあなたがそれを達成しようとしていると思っています....私はコードを更新して、 –

0

だから何が起こっていることは、あなたがパッカーズボタンをクリックした場合でも「this.state.clicked」のあなたの割り当てはtoggleView方法であいまいであるため、ペイトリオッツボタンはまだ、それがクリックさだと思っています。

class something { 
    constructor(props) { 
    super(props); 
    this.state = { 
     clicked: null 
    }; 
    } 

    toggleView(team) { 
    this.setState({ 
     clicked: team 
    }); 
    } 

    buttonClass(team) { 
    var clicked = this.state.clicked; 
    return (team === clicked ? "btn-primary" : "btn-primary selected "); 
    } 

    render() { 
    return (
     <div> 
     <button 
      className={this.buttonClass('Patriots')} 
      type="button" 
      onClick={e => this.toggleView('Patriots')} 
     > 
      Patriots 
      </button> 
     <button 
      className={this.buttonClass('Packers')} 
      type="button" 
      onClick={e => this.toggleView('Packers')} 
     > 
      Packers{" "} 
     </button> 
     </div> 
    ); 
    } 
} 
+0

外でクリックした場合、選択し迅速な対応に感謝し続けます下に私は、コードをテストしました。ソリューションによってボタンのテキストが変更されます。私はボタンの名前のための特定のCSSを設定している。ボタンをクリックすると、ボタンのテキストレイアウトが変わります。また、divの外側をクリックするとクラスは削除されます。 – singha4086

関連する問題