var Button = React.createClass({
getDefaultProps: function() {
return {
actived: false,
onClick: function() {}
};
},
render: function() {
className = "button"
className += this.props.actived ? ' actived' : '';
return <div className={className} onClick={this.props.onClick}></div>;
}
});
var ButtonGroup = React.createClass({
getInitialState: function() {
return {
status: [false, false, false]
};
},
onClick: function(i) {
var status = [];
for (j = 0; j < this.state.status.length; ++j) {
status[j] = j === i;
}
this.setState({ status: status });
},
render: function() {
var that = this;
buttons = this.state.status.map(function(curr, i) {
onClick = function() { that.onClick(i); };
return <Button key={i} onClick={onClick} actived={that.state.status[i]}/>
});
return <div className="button-group">{buttons}</div>
}
});
React.render(<ButtonGroup/>, document.body);
<script src="http://fb.me/react-js-fiddle-integration.js"></script>
.button {
display: inline-block;
width: 3rem;
height: 3rem;
margin-right: 0.5rem;
background-color: #000;
}
.button:last-child {
margin-right: 0;
}
.actived {
background-color: #f00;
}
External resources loaded into this fiddle: