11.事件绑定.html 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. <script src="./babel.min.js"></script>
  8. <script src="./react.development.js"></script>
  9. <script src="./react-dom.development.js"></script>
  10. </head>
  11. <body>
  12. <div id="root"></div>
  13. <script type="text/babel">
  14. // 原生DOM的事件绑定:
  15. // 1.通过事件属性 onclick,onkeyup,onchange....
  16. // 2.通过DOM对象 addEventListener()/removeEventListener()
  17. // 在React中 , 只能通过第一种方式来注册事件.
  18. // 区别:
  19. // 原生事件属性,是由"on + 事件类型"组成的属性,
  20. // 在jsx上需要改成等价的驼峰命名格式,并且,绑定的事件监听器必须是函数类型
  21. const root = ReactDOM.createRoot(document.getElementById("root"));
  22. function App() {
  23. function handleClick() {
  24. console.log("哈哈")
  25. return () => {
  26. console.log("33")
  27. }
  28. }
  29. function handleChange() {
  30. console.log("11")
  31. return () => {
  32. console.log("22")
  33. }
  34. }
  35. return (
  36. <div>
  37. <button onClick={()=> {
  38. console.log("你好")
  39. }}>点击</button>
  40. <button onClick={handleClick}>点击</button>
  41. <button onClick={handleClick()}>点击1</button>
  42. <br/>
  43. <br/>
  44. <input type="text" onKeyUp={function() {
  45. console.log('抬起')
  46. }} />
  47. <br/>
  48. <br/>
  49. <input type="text" onChange={()=>{
  50. console.log("改变")
  51. }} />
  52. {/*
  53. <input type="text" onChange={handleChange()} />
  54. */}
  55. <input type="checkbox" onChange={handleChange()} />
  56. </div>
  57. )
  58. }
  59. root.render(<App/>);
  60. </script>
  61. </body>
  62. </html>