2016-09-23 63 views

回答

2

主要想法是在父组件中使用​​函数,然后在子组件中调用它以更新父项的状态,然后将其作为道具传递给不同的子项。我遵循你现有的结构,结果如下:JSbin

+0

工程就像一个魅力。谢谢。 – Anita

0

像这样的工作:

//Child 
var SingleButton = React.createClass({ 
    render: function() { 
    let { selectedTransport, type, text, handleClick } = this.props; 
    let selected = selectedTransport[type]; 
    var style = selected ? { "backgroundColor":"yellow" } : { 
     "backgroundColor":"" 
    }; 
    return (
     <button style={style} onClick={handleClick} name={type}> 
     {text} 
     </button> 
    ) 
    } 
}); 

//Parent 
var Categories = React.createClass({ 
    getInitialState: function() { 
    return { 
     selectedTransport: { 
     car: false, 
     train: false, 
     plane: false 
     } 
    } 
    }, 
    handleClick: function(event) { 
    console.log('CLICK'); 
    let { selectedTransport } = this.state; 
    selectedTransport[event.target.name] = true; 
    this.setState({ selectedTransport }); 
    console.log('TRANSPORT', this.state.selectedTransport); 
    }, 

    render: function() { 
    console.log('RENDERING', this.state); 
    var transportType = ['car', 'train', 'plane']; 
    return (
     <div> 
     {transportType.map((type, idx) => (
      <SingleButton 
      {...this.state} 
      text={type} 
      handleClick={this.handleClick} 
      key={idx} 
      type={type} 
      /> 
     )) 
     </div> 
    ); 
    } 
}); 


ReactDOM.render(<Categories />, document.getElementById('app'));