React state. PropTypes

by Artem

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://npmcdn.com/react@latest/dist/react-with-addons.js"></script>
<script src="https://npmcdn.com/react-dom@latest/dist/react-dom.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>

<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

JavaScript 1.7

var Hello = React.createClass({
	propTypes: {
  	name: React.PropTypes.string.isRequired,
    age: React.PropTypes.number
	},
  getDefaultProps: function() {
		return {
    	name: 'Anonymous'
    };
  },
  getInitialState: function() {
  	return {
   		text: 'Hello'
    };
	},
  handleChange: function(e) {
  	let newText = e.target.value;
    this.setState({text: newText});
  },
  render: function() {
    return <div>Hello, my name is {this.props.name}. I'm {this.props.age}.<br/>
    			 <input type="text" onChange={this.handleChange}/><br/>
           {this.state.text}
            </div>;
  }
});

ReactDOM.render(
  <Hello age={123} />,
  document.getElementById('container')
);