2017-10-11 62 views
1

我有以下代碼。默認情況下,愛國者將具有藍色的btn-primary顏色,並且打包機將具有白色的默認顏色。顏色在兩個按鈕之間進行選擇時發生變化,但當我在div外單擊時,兩個按鈕都會變爲白色。真的很感謝任何建議。我是一個絕對的初學者btw。className被移除點擊區域外

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

我只是測試下面的代碼將與onClickselected類更新按鈕,將繼續選擇,如果點擊之外

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