react-conponent-todo

<!DOCTYPE html>
<html>
  <head>
    <script src="../../build/react.js"></script>
    <script src="../../build/react-dom.js"></script>
    <script src="../../build/browser.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
    var TodoList = React.createClass({
      render: function() {
        var createItem = function(item) {
          return <li key={item.id}>{item.text}</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([{text: this.state.text, id: Date.now()}]);
          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>
          );
        },
    });

    ReactDOM.render(<TodoApp />, document.getElementById('example'));
    </script>
  </body>
</html>
原文地址:https://www.cnblogs.com/cynthia-wuqian/p/5209439.html