React is difficult...
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/JSXTransformer.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/react-with-addons.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration.js"></script>
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>
CSS
button {
display: block;
margin: 25px;
}
JavaScript 1.7
var Name = React.createClass({
render: function() {
return <button onClick={this.props.onClick.bind(null, this.props.id, 'John')}>{this.props.value}</button>
}
});
var NameContainer = React.createClass({
getInitialState: function() {
return {
names: [
{ id: 1, name: 'Fred' },
{ id: 2, name: 'George' }
]
};
},
handleClick: function(id, newName) {
names = this.state.names;
names.map(function(obj){
if (obj.id === id) {
obj.name = newName;
}
return obj;
});
this.setState({
names: names
});
},
render: function() {
var handleClick = this.handleClick;
var children = this.state.names.map(function(obj){
return <Name key={obj.id} id={obj.id} value={obj.name} onClick={handleClick} />;
});
return (
<div>
{children}
</div>
);
}
});
React.render(<NameContainer />, document.getElementById('container'));