Demo of ReactJS linkState
by cachvico
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>
CSS
.parent {
border: thin solid grey;
padding: 10px;
background-color: lightgreen;
}
.child {
border: thin solid grey;
padding: 10px;
background-color: pink;
}
input {
padding: 5px;
border: none;
}
JavaScript 1.7
var Parent = React.createClass({
mixins: [React.addons.LinkedStateMixin],
getInitialState: function() {
return {
p: 'Hello World',
q: 'Click me if I\'m pink!',
r: 'A'
};
},
render: function() {
return (
<div className='parent'>
<p>
<h3>Parent</h3>
<tt>
p: {this.state.p}<br />
q: {this.state.q}<br />
r: {this.state.r}
</tt>
</p>
<Child q = {this.linkState('q')}
p = {this.linkState('p')}
r = {this.linkState('r')} />
</div>
);
}
});
var Child = React.createClass({
clicked: function() {
this.props.q.requestChange("Thank you :)");
},
render: function() {
return (
<div className='child'>
<h3>Child</h3>
<p>
<input valueLink={this.props.p} />
</p>
<p>
<tt onClick={this.clicked}>
{this.props.q.value}
</tt>
</p>
<select valueLink={this.props.r}>
<option value={'A'}>A</option>
<option value={'B'}>B</option>
</select>
</div>
);
}
});
React.render(<Parent />, document.body)