e 3 months ago
parent
commit
481534b5e2

+ 47 - 0
16.react/react初阶/7.组件传参.html

@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <!-- jsx 语法浏览器不识别 jsx => js 浏览器可识别的语言 -->
+    <script src="./babel.min.js"></script>
+    <!-- react的核心库 -->
+    <script src="./react.development.js"></script>
+    <!-- 解析react中的dom库 -->
+    <script src="./react-dom.development.js"></script>
+</head>
+<body>
+    <div id="root">
+    </div>
+    <script type="text/babel">
+        let root = ReactDOM.createRoot(document.getElementById("root"));
+        // 组件传参
+        function App() {
+            const user = '一休';
+            return (
+                <div>
+                    {/*组件复用*/}
+                    <Child name={user} />
+                </div>
+            )
+        }
+        // 函数组件:props 接收 才可以进行操作
+        // props是单向数据流 只读 不可修改
+        function Child(props) {
+            console.log(props.name,'接受的值')
+            // props.name = '喜羊羊'
+            return <h1>Hello, {props.name}</h1>
+        }
+        // class Child extends React.Component{
+        //     render() {
+        //         console.log(this.props)
+        //         return (
+        //             <div>你好,{this.props.name}</div>
+        //         )
+        //     }
+        // }
+        root.render(<App/>)        
+    </script>
+</body>
+</html>

+ 55 - 0
16.react/react初阶/8.组件状态.html

@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <!-- jsx 语法浏览器不识别 jsx => js 浏览器可识别的语言 -->
+    <script src="./babel.min.js"></script>
+    <!-- react的核心库 -->
+    <script src="./react.development.js"></script>
+    <!-- 解析react中的dom库 -->
+    <script src="./react-dom.development.js"></script>
+</head>
+<body>
+    <div id="root">
+    </div>
+    <script type="text/babel">
+        let root = ReactDOM.createRoot(document.getElementById("root"));
+        function App() {
+            const user = '小红';
+            return (
+                <div>
+                    <h1>Hello, React!</h1>
+                    <p>This is a simple React app.</p>
+                    <Child use={user} />
+                </div>
+            );
+        }
+        class Child extends React.Component {
+            // 类组件有状态
+            // <button></button>
+            // const num = 5;
+            // 构造器 用于给组件实例初始化
+            constructor(props) {
+                super(props);  // 继承父类属性和方法
+                // this 可以访问当前创建的实例 但是 一定要在 调用super函数之后才可以使用
+                this.state = {
+                    num: 5
+                } // 类似于Vue中的data属性 组件的自身的状态
+            }          
+            render() {
+                console.log(this.props)  
+                this.state.num = 30;
+                return (<div>
+                    <button>-</button>
+                    <span>{this.state.num}</span>
+                    <button>+</button>
+                </div>)
+
+            }
+        }
+        root.render(<App/>)        
+    </script>
+</body>
+</html>

+ 82 - 0
16.react/react初阶/9.生命周期.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
+    <!-- jsx 语法浏览器不识别 jsx => js 浏览器可识别的语言 -->
+    <script src="./babel.min.js"></script>
+    <!-- react的核心库 -->
+    <script src="./react.development.js"></script>
+    <!-- 解析react中的dom库 -->
+    <script src="./react-dom.development.js"></script>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="text/babel">
+      let root = ReactDOM.createRoot(document.getElementById("root"));
+      function App() {
+        return (
+          <div>
+            <h1>Hello, React!</h1>
+            <Flower num={2} />
+          </div>
+        );
+      }
+      class Flower extends React.Component {
+        constructor(props) {
+          super(props);
+          // props state 可以改变页面
+          // props 只读 不修改
+          // state 可修改
+          this.state = {
+            currentTime: new Date(),
+            count: 0
+          };
+        }
+        // 挂载
+        componentDidMount() {
+          console.log("挂载");
+          console.log(this.props)
+          this.timer = setInterval(() => {
+            // currentTime: new Date()
+            // 在react中 响应式更新状态 唯一方法:调用组件实例的setState方法
+            // setState方法 在修改状态时候 就是新值 与 旧值合并后在覆盖掉旧状态
+            // this.setState({
+            //     currentTime: new Date(),
+            //     // count: count + 1
+            // })
+            this.setState((state, props) => ({
+                // console.log(state,props),
+                currentTime: new Date(),
+                count: state.count + 1 + props.num
+            //   counter: state.counter + props.increment,
+            }));
+          }, 1000);
+        }
+        // 更新
+        componentDidUpdate() {
+            console.log("更新");
+  
+        }
+        // 卸载
+        componentWillUnmount() {
+          clearInterval(this.timer);
+        }
+        render() {
+          // this.state.currentTime = 30;
+          // console.log(this.state.count)
+          return (
+            <div>
+              <h1>React</h1>
+              <h3>{this.state.count}</h3>
+              <p>当前时间:{this.state.currentTime.toLocaleString()}</p>
+            </div>
+          );
+        }
+      }
+
+      root.render(<App />);
+    </script>
+  </body>
+</html>