e 2 ay önce
ebeveyn
işleme
cc6654b70f

+ 54 - 0
16.react/react初阶/14.计数器.html

@@ -0,0 +1,54 @@
+<!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 <Count num={5} />
+        }
+        class Count extends React.Component {
+            constructor() {
+                super();
+                this.state = {
+                    count:0
+                }
+            }
+            addCount() {
+                // this.setState({
+                //     count: this.state.count + 1
+                // })
+                this.setState((prevState,props) => {
+                    return {
+                        count: prevState.count + props.num
+                    }
+                })
+            }
+            render() {
+                const {count} = this.state;
+                return (
+                    <div>
+                        <h1>数量:{count}</h1>   
+                        <button onClick={this.addCount.bind(this)}>+</button>
+                        <br/> 
+                        <button>-</button>
+                    </div>
+                )
+            }
+        }
+        root.render(<App/>)        
+    </script>
+</body>
+</html>

+ 45 - 0
16.react/react初阶/15.列表渲染.html

@@ -0,0 +1,45 @@
+<!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 <List />;
+      }
+      class List extends React.Component {
+        constructor() {
+          super();
+          this.state = {
+            list: ["图图", "哆啦A梦", "喜羊羊", "光头强"],
+          };
+        }
+        // 循环:for / while / do while / for in /for of / forEach / map
+        render() {
+            // render函数 可以处理所有的js逻辑
+            const {list} = this.state;
+           const newsList = list.map((element,index) => <li key={index}>{index+1}-{element}</li>)
+
+          return <div>
+                <ul>
+                    {/* jsx 语法  自动解析 */}
+                    {newsList}  
+                </ul>
+            </div>;
+        }
+      }
+      root.render(<App />);
+    </script>
+  </body>
+</html>

+ 84 - 0
16.react/react初阶/16.条件渲染.html

@@ -0,0 +1,84 @@
+<!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"));
+      /**
+       * 条件判断:
+       * if/else/else-if
+       * switch-case
+       * 三元判断
+       */
+      function App() {
+        return <News />;
+      }
+      /**
+       * 登录逻辑
+       * 逻辑:用户 => 首页 ; 非用户 => 登录页
+       * 本地存储
+       * 
+       * 类组件与函数组件 分别实现
+       */
+    
+      class News extends React.Component {
+        constructor() {
+          super();
+          this.state = {
+            token: JSON.parse(localStorage.getItem("token")),
+            msg: {
+              user: "小小",
+              name: 10,
+            },
+          };
+        }
+        render() {
+          let { token } = this.state;
+          // return (
+          //     <div>
+          //         if(token) {
+          //             <h1>已登录</h1>
+          //         } else {
+          //             <div>
+          //                 <h2>未登录</h2>
+          //                 <button>请登录</button>
+          //             </div>
+          //         }
+          //     </div>
+          // )
+          //   return token ? (
+          //     <h1>已登录</h1>
+          //   ) : (
+          //     <div>
+          //       <h2>未登录</h2>
+          //       <button>请登录</button>
+          //     </div>
+          //   );
+          if (token) {
+            return <div>已登录</div>;
+          } else {
+            return (
+              <div>
+                <h2>未登录</h2>
+                {/*点击请登录 存储token并跳转登录成功页面*/}
+                <button>请登录</button>
+              </div>
+            );
+          }
+        }
+      }
+      root.render(<App />);
+    </script>
+  </body>
+</html>