|
@@ -0,0 +1,64 @@
|
|
|
+<!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转为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>
|
|
|
+ <div id="btn">这是一个按钮</div>
|
|
|
+
|
|
|
+ <script type="text/babel">
|
|
|
+ function onClick() {
|
|
|
+ console.log(this)
|
|
|
+ }
|
|
|
+ function handleClick1(e) {
|
|
|
+ console.log(this, '正常') //undefined
|
|
|
+ console.log(e, '事件') //存在事件对象
|
|
|
+ }
|
|
|
+ // 解构接受参数
|
|
|
+ function handleClick2(e, ...user) {
|
|
|
+ console.log(e.target)
|
|
|
+ console.log(...user)
|
|
|
+ }
|
|
|
+ function handleClick3(e) {
|
|
|
+ console.log(e)
|
|
|
+ // console.log(id)
|
|
|
+ }
|
|
|
+ document.getElementById("btn").onclick = onClick;
|
|
|
+ var aaa = { name: "My name is dage" };
|
|
|
+ // 改变this指向:call bind apply
|
|
|
+ // 第二种
|
|
|
+ // let element = <div onClick={onClick.bind(aaa)}>这是第二个按钮</div>
|
|
|
+ let element = (
|
|
|
+ <div>
|
|
|
+ <p onClick={handleClick1.bind(aaa)}>事件1</p>
|
|
|
+ {/*套壳*/}
|
|
|
+ <p onClick={(e)=>{
|
|
|
+ handleClick2(e,3,444,555)
|
|
|
+ }}>事件2</p>
|
|
|
+ <p onClick={handleClick3.bind(null, 444)}>事件3</p>
|
|
|
+ {/*null不占位*/}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ let newPage = ReactDOM.createRoot(document.querySelector("#root"));
|
|
|
+ newPage.render(element)
|
|
|
+ {/**
|
|
|
+ 默认传递事件对象
|
|
|
+ bind虽然可以改变this指向 但是位置固定并不灵活
|
|
|
+ 箭头函数 可以套壳比较灵活
|
|
|
+ */}
|
|
|
+ </script>
|
|
|
+</body>
|
|
|
+
|
|
|
+</html>
|