| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- <!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>
 
 
  |