You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
var TODO_COMPONENT = `
|
|
var TodoList = React.createClass({
|
|
render: function() {
|
|
var createItem = function(itemText) {
|
|
return <li>{itemText}</li>;
|
|
};
|
|
return <ul>{this.props.items.map(createItem)}</ul>;
|
|
}
|
|
});
|
|
var TodoApp = React.createClass({
|
|
getInitialState: function() {
|
|
return {items: [], text: ''};
|
|
},
|
|
onChange: function(e) {
|
|
this.setState({text: e.target.value});
|
|
},
|
|
handleSubmit: function(e) {
|
|
e.preventDefault();
|
|
var nextItems = this.state.items.concat([this.state.text]);
|
|
var nextText = '';
|
|
this.setState({items: nextItems, text: nextText});
|
|
},
|
|
render: function() {
|
|
return (
|
|
<div>
|
|
<h3>TODO</h3>
|
|
<TodoList items={this.state.items} />
|
|
<form onSubmit={this.handleSubmit}>
|
|
<input onChange={this.onChange} value={this.state.text} />
|
|
<button>{'Add #' + (this.state.items.length + 1)}</button>
|
|
</form>
|
|
</div>
|
|
);
|
|
}
|
|
});
|
|
|
|
React.render(<TodoApp />, mountNode);
|
|
`;
|
|
|
|
React.render(
|
|
<ReactPlayground codeText={TODO_COMPONENT} />,
|
|
document.getElementById('todoExample')
|
|
);
|
|
|