mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 12:20:38 +01:00
This covers most everything. The perf suite still needs work for the Element updates. And the server rendering example needs to be done wholesale.
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
var TODO_COMPONENT = "\
|
|
var TodoList = React.createClass({\n\
|
|
render: function() {\n\
|
|
var createItem = function(itemText) {\n\
|
|
return <li>{itemText}</li>;\n\
|
|
};\n\
|
|
return <ul>{this.props.items.map(createItem)}</ul>;\n\
|
|
}\n\
|
|
});\n\
|
|
var TodoApp = React.createClass({\n\
|
|
getInitialState: function() {\n\
|
|
return {items: [], text: ''};\n\
|
|
},\n\
|
|
onChange: function(e) {\n\
|
|
this.setState({text: e.target.value});\n\
|
|
},\n\
|
|
handleSubmit: function(e) {\n\
|
|
e.preventDefault();\n\
|
|
var nextItems = this.state.items.concat([this.state.text]);\n\
|
|
var nextText = '';\n\
|
|
this.setState({items: nextItems, text: nextText});\n\
|
|
},\n\
|
|
render: function() {\n\
|
|
return (\n\
|
|
<div>\n\
|
|
<h3>TODO</h3>\n\
|
|
<TodoList items={this.state.items} />\n\
|
|
<form onSubmit={this.handleSubmit}>\n\
|
|
<input onChange={this.onChange} value={this.state.text} />\n\
|
|
<button>{'Add #' + (this.state.items.length + 1)}</button>\n\
|
|
</form>\n\
|
|
</div>\n\
|
|
);\n\
|
|
}\n\
|
|
});\n\
|
|
React.render(<TodoApp />, mountNode);\
|
|
";
|
|
|
|
React.render(
|
|
<ReactPlayground codeText={TODO_COMPONENT} />,
|
|
document.getElementById('todoExample')
|
|
);
|