Эх сурвалжийг харах

React:事件绑定&事件对象获取

大侠 2 жил өмнө
parent
commit
dcad5ae64b

+ 60 - 0
15_React/day-2/code/1.事件绑定.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
+    <script src="../../babel.min.js"></script>
+    <script src="../../react.development.js"></script>
+    <script src="../../react-dom.development.js"></script>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="text/babel">
+      // 原生DOM的事件绑定:1 通过事件属性:onclick,onkeyup,onchange,onblur,onsubmit,... 2 通过DOM对象的方法 addEventListener()
+
+      // 在React中,只能通过 第一种方式 来注册事件。但是也有一点区别:原生事件属性 是由 “on + 事件类型” 组成的属性 ,因此在jsx上需要改成等价的驼峰命名即可,绑定的事件监听器必须是函数类型
+
+      const root = ReactDOM.createRoot(document.querySelector('#root'));
+
+      function App() {
+        function handleChange() {
+          console.log('changed');
+          return () => {
+            console.log('可以喇叭');
+          };
+        }
+        return (
+          <div>
+            <p>
+              <button
+                onClick={() => {
+                  alert('你点我啊!');
+                }}
+              >
+                按钮
+              </button>
+            </p>
+            <p>
+              <input type="checkbox" onChange={handleChange} />
+            </p>
+            <p>
+              <input
+                type="text"
+                onKeyUp={function () {
+                  console.log(`output->keyup `);
+                }}
+              />
+            </p>
+            <p>
+              <input type="text" onChange={handleChange()} />
+            </p>
+          </div>
+        );
+      }
+
+      root.render(<App />);
+    </script>
+  </body>
+</html>

+ 60 - 0
15_React/day-2/code/2.事件对象.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
+    <script src="../../babel.min.js"></script>
+    <script src="../../react.development.js"></script>
+    <script src="../../react-dom.development.js"></script>
+  </head>
+  <body>
+    <div id="root"></div>
+    <script type="text/babel">
+      // 原生DOM的事件绑定:1 通过事件属性:onclick,onkeyup,onchange,onblur,onsubmit,... 2 通过DOM对象的方法 addEventListener()
+
+      //一: 在React中,只能通过 第一种方式 来注册事件。但是也有一点区别:原生事件属性 是由 “on + 事件类型” 组成的属性 ,因此在jsx上需要改成等价的驼峰命名即可,绑定的事件监听器必须是函数类型
+
+      // 二:如果获取事件对象。当React事件触发时,事件的监听器会被传入一个唯一参数 就是 事件对象,一般参数名为 e,ev, event。
+
+      const root = ReactDOM.createRoot(document.querySelector('#root'));
+
+      function App() {
+        function handleChange() {}
+        return (
+          <div>
+            <p>
+              <button
+                onClick={(e) => {
+                  // alert('你点我啊!');
+                  console.log(e);
+                }}
+              >
+                按钮
+              </button>
+            </p>
+            <p>
+              <input
+                type="text"
+                onClick={(e) => {
+                  console.log(`output->e`, e);
+                  console.log(e.target.value);
+                }}
+                onKeyUp={function (e) {
+                  console.log(`output->keyup `);
+                  console.log(e);
+                }}
+              />
+            </p>
+            <p>
+              <input type="text" onChange={handleChange} />
+            </p>
+          </div>
+        );
+      }
+
+      root.render(<App />);
+    </script>
+  </body>
+</html>