React Base Fiddle (JSX)
Starting point for creating JSFiddles with React. This uses React with Addons.
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://fb.me/react-with-addons-0.14.6.js"></script>
<script src="https://fb.me/react-dom-0.14.6.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>
JavaScript 1.7
var transformer = {
powers: ['jump', 'shoot'],
config: {
height: 200,
},
isDecepticon: false,
}
class Control extends React.Component {
render() {
let value = this.props.model[this.props.attr];
return (
<label className="btn btn-primary">
{this.props.label}
<input type="checkbox"
value={value}
onChange={this.props.change}
/>
</label>
)
}
}
class Transformer extends React.Component {
render() {
var m = this.props.model
return (
<div>
Powers: {this.props.model.powers.join(', ')}
<br/>
Config: {JSON.stringify(this.props.model.config)}
<br/>
{this.props.model.isDecepticon &&
<span>Mission: Kill all Autobots</span>
}
</div>
)
}
}
class TransformersApp extends React.Component {
constructor() {
super()
this.state = {transformer: transformer};
}
render() {
return (
<div>
<Control label='controls'
model={this.state.transformer}
attr='isDecepticon'
change={this.toggleDeception.bind(this)}/>
<Transformer model={this.state.transformer}/>
</div>
)
}
toggleDeception() {
var newTransformer = Object.assign({}, this.state.transformer, {
isDecepticon: !this.state.transformer.isDecepticon
});
this.setState({
transformer: newTransformer
});
}
}
ReactDOM.render( < TransformersApp/ > ,
document.getElementById('container')
);