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