8.组件状态.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. <!-- jsx 语法浏览器不识别 jsx => js 浏览器可识别的语言 -->
  8. <script src="./babel.min.js"></script>
  9. <!-- react的核心库 -->
  10. <script src="./react.development.js"></script>
  11. <!-- 解析react中的dom库 -->
  12. <script src="./react-dom.development.js"></script>
  13. </head>
  14. <body>
  15. <div id="root">
  16. </div>
  17. <script type="text/babel">
  18. let root = ReactDOM.createRoot(document.getElementById("root"));
  19. function App() {
  20. const user = '小红';
  21. return (
  22. <div>
  23. <h1>Hello, React!</h1>
  24. <p>This is a simple React app.</p>
  25. <Child use={user} />
  26. </div>
  27. );
  28. }
  29. class Child extends React.Component {
  30. // 类组件有状态
  31. // <button></button>
  32. // const num = 5;
  33. // 构造器 用于给组件实例初始化
  34. constructor(props) {
  35. super(props); // 继承父类属性和方法
  36. // this 可以访问当前创建的实例 但是 一定要在 调用super函数之后才可以使用
  37. this.state = {
  38. num: 5
  39. } // 类似于Vue中的data属性 组件的自身的状态
  40. }
  41. render() {
  42. console.log(this.props)
  43. this.state.num = 30;
  44. return (<div>
  45. <button>-</button>
  46. <span>{this.state.num}</span>
  47. <button>+</button>
  48. </div>)
  49. }
  50. }
  51. root.render(<App/>)
  52. </script>
  53. </body>
  54. </html>