12.类组件.html 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./babel.min.js"></script>
  8. <script src="./react.development.js"></script>
  9. <script src="./react-dom.development.js"></script>
  10. </head>
  11. <body>
  12. <div id="root"></div>
  13. <script type="text/babel">
  14. // props
  15. // state
  16. class News extends React.Component {
  17. state = {
  18. name: '图图',
  19. age: 3,
  20. sum: 0
  21. }
  22. // handleClick = () => {
  23. // console.log("触发")
  24. // // this.state.age += 2;
  25. // console.log(this)
  26. // }
  27. handleClick() {
  28. this.setState({
  29. age: this.state.age + 10,
  30. name: 'Tom'
  31. })
  32. }
  33. handleAdd() {
  34. this.setState((val) => ({ sum: val.sum + 1 })
  35. )
  36. }
  37. handleReduce() {
  38. this.setState({
  39. sum: this.state.sum - 1
  40. })
  41. }
  42. render() {
  43. console.log(this, '11')
  44. return (
  45. <div>
  46. <h1>父组件</h1>
  47. <h1>数值:{this.state.sum}</h1>
  48. <button onClick={this.handleAdd.bind(this)}>+1</button>
  49. <button onClick={this.handleReduce.bind(this)}>-1</button>
  50. <h3>我叫{this.state.name},今年{this.state.age}岁</h3>
  51. <button onClick={this.handleClick.bind(this)}>+2</button>
  52. <button onClick={() => {
  53. console.log(this)
  54. }}>+2</button>
  55. <Child />
  56. </div >
  57. )
  58. }
  59. }
  60. class Child extends React.Component {
  61. render() {
  62. return (
  63. <div>子组件</div>
  64. )
  65. }
  66. }
  67. const element = <News />
  68. const container = document.getElementById("root");
  69. const root = ReactDOM.createRoot(container)
  70. root.render(element);
  71. </script>
  72. </body>
  73. </html>