事件绑定中的 this 指向问题(坑)

第一种绑定方式(不做任何处理):

  • this 指向 Window

  • 默认接收一个参数 event 事件源对象

  • 不支持额外的参数传递

<button onClick={this.handleClick}>点击改变 message</button>

第二种方式(bind):

  • this 指向组件实例

  • 默认接收一个参数 event

<button onClick={this.handleClick.bind(this)}>点击改变 message</button>

第二种方式还可以为方法传递额外参数:

  • 手动传递的参数会放到函数最前面,event 会作为函数的最后一个参数

<button onClick={this.handleClick.bind(this, 123, 456)}>点击改变 message</button>

第三种方式(箭头函数):

  • 自动 bind this

  • 手动传递参数

  • 参数顺序自己指定,event 也需要自己手动传递

<button onClick={(e) => {this.handleClick(e, 123, 456)}}>点击改变 message</button>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>bind 函数</title>
</head>
<body><script>function fn(a, b, c, d, e, f) {console.log(a, b, c) // 1, 2, 3console.log(d, e, f) // 4, 5, 6}// 绑定的同时传递参数:预传参,不调用// 预置参数var newFn = fn.bind(this, 1, 2, 3)// 调用的时候传递参数,该参数会和预传递的参数合并到一起作为函数参数newFn(4, 5, 6)// fn(4, 5, 6)</script>
</body>
</html>

再次强调事件绑定中this的坑相关推荐

  1. 事件绑定中的this问题

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  2. pdo 参数绑定中 where 子句中的错误的解决

    pdo 参数绑定中 where 子句中的错误的解决 select * from  admin where 1=1  and admin_name =  '$user_name' 象这句是会出错的,说 ...

  3. 撸啊撸,再次撸HashMap源码,踩坑源码中构造方法!!!每次都有收获

    前言 点赞在看,养成习惯. 点赞收藏,人生辉煌. 点击关注[微信搜索公众号:编程背锅侠],第一时间获得最新文章. HashMap系列文章 第一篇 HashMap源码中的成员变量你还不懂? 来来来!!! ...

  4. Js事件绑定时,函数名加括号和不加括号有什么区别

    Js事件绑定时,函数名加括号和不加括号有什么区别以window.onload为列 大致可以理解为一:不加括号时:=指向函数,触发事件时触发函数.window.οnlοad=aa;aa为一个函数等价于w ...

  5. 关于Openlayers Overlay事件监听的一个坑

    一.问题产生: 我使用Overlay创建标绘操作的小方块元素,如下代码和如图. 然后我监听小方块的mousedown事件.用原始的事件监听: element.addEventListener('mou ...

  6. uniapp 账号登陆,账号绑定/解绑流程,躺坑

    第一次开发uniapp微信小程序,记录一下开发中遇到的流程以及坑 账号登陆 1.uni.login 获取code,在调用接口传入code获取uKey 绑定账号/解绑 1.uni.login获取code ...

  7. JS鼠标事件onMouseOver和onMouseOut的坑

    在React中监听鼠标点击事件,UI如下,左右有padding. 然后鼠标从左往右慢慢滑入HOMR再滑出. UI代码: 事件绑定在外层父元素上. 事件触发顺序如下. 1 鼠标只碰触父元素padding ...

  8. 事件绑定在IE下this是window的问题

    昨天写一个函数的时候,后来用了事件绑定,开始没在IE下测试,在chrome下都是没问题的.后来在IE下测试发现出错. 后来修改一下,发现oBox.οnclick=function(){}没问题,而ad ...

  9. h5 监听浏览器被切换到后台或者手机锁屏再次唤起事件

    H5有一个事件叫 visibilitychange ,当浏览器的某个标签页切换到后台,或从后台切换到前台时就会触发该消息,代码如下: document.addEventListener("v ...

最新文章

  1. 飞越难关,飞书生态「战疫工具箱」来驰援!
  2. 染成茜色的坂道 汉化版攻略
  3. Shell 更好看的回显
  4. mongodb简单的增删改查
  5. java数组 arraylist_JAVA 用数组实现 ArrayList
  6. 关于机器学习,这里有一份权威入门指南
  7. 【免费毕设】PHP论文格式化系统(系统+论文)
  8. Swift学习笔记 In-out形参
  9. 计算机网络—SR选择重传协议
  10. 编译java源代码文件
  11. 推荐一个下载中国城市统计年鉴的地址
  12. 如何学习游戏服务器端编程和书籍推荐
  13. c语言如何编一个警报声音,电脑如何自定义警报的声音具体该如何操作
  14. 结对编程-俞神JAVA代码赏析
  15. 学习指针后对int main(int argc, char *argv[]),“()“内部参数的详解(初学者不要怕,浅浅学过指针的就可以看懂)
  16. 网上下载的PPT模板总是会自动切换、自动播放动画,怎么取消自动播放
  17. 【HTTP】请求方法
  18. 技术宅---我的网上抢火车票攻略
  19. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口
  20. 嵌入式设备显示屏相关概念汇总

热门文章

  1. JavaScript数据类型和变量学习小记
  2. Linux而不必进入password登陆自己主动sshserver方法
  3. JBoss 系列五十:使用Apache httpd(mod_jk)和JBoss构架高可用集群环境
  4. Flutter入门篇(一)
  5. JAVASCRIPT实现绚丽TAB选项卡
  6. 掘金-Markdown 编辑器使用手册
  7. [翻译]Windows Phone 7用户界面框架
  8. static、final、static final 用法
  9. base64文件上传后台处理
  10. 使用Spring AOP中MethodInterceptor记录日志