1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <script src="../build/react.js"></script>
    5. <script src="../build/react-dom.js"></script>
    6. <script src="../build/browser.min.js"></script>
    7. </head>
    8. <body>
    9. <div id="example"></div>
    10. <script type="text/babel">
    11. var LikeButton = React.createClass({
    12. getInitialState: function() {
    13. return {liked: false};
    14. },
    15. handleClick: function(event) {
    16. this.setState({liked: !this.state.liked});
    17. },
    18. render: function() {
    19. var text = this.state.liked ? 'like' : 'haven\'t liked';
    20. return (
    21. <p onClick={this.handleClick}>
    22. You {text} this. Click to toggle.
    23. </p>
    24. );
    25. }
    26. });
    27. ReactDOM.render(
    28. <LikeButton />,
    29. document.getElementById('example')
    30. );
    31. </script>
    32. </body>
    33. </html>
    34. 01、组件免不了要与用户互动,React的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,
    35. 然后用户互动,导致状态变化,从而触发重新渲染UI
    36. 02、LikeButton 组件,它的getInitialState 方法用于定义初始状态,也就是一个对象,这个对象可以通过
    37. this.state 属性读取。当用户点击组件,导致状态变化,this.setState方法就修改状态值,每次修改以后,
    38. 自动调用 this.render 方法,再次渲染组件。
    39. 3、this.props 和this.state 都用于描述组件的特性,可能会产生混淆。一个简单的区分方法是,this.props 表示
    40. 那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性