/** * @jsx React.DOM */ var TODO_COMPONENT = "\ /** @jsx React.DOM */\n\ 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.renderComponent(<TodoApp />, mountNode);\ "; React.renderComponent( <ReactPlayground codeText={TODO_COMPONENT} />, document.getElementById('todoExample') );