React中的this为什么需要bind()来绑定(初步认识)

  • 为什么要用bind等方法来绑定this?
    • 这是因为在实际使用的过程中,我们肯定是希望this指向的是触发dom事件的对象,但是由于组件本身是有一个渲染的过程的,实例函数都是由构造函数不断重新构造渲染的,所以就算一开始this指向的是触发时间的实例函数,但是在重新渲染的时候由于需要重新走一下构造函数,所以this所指的对象就会改变(应该是变为构造函数,或者是windows(也就是全局))所以我们一般需要在触发函数的事件上先把this的指向绑定好,这样在重新渲染的时候就不会发生this的指向改变这种事了。同理在constructor里绑定也是一样。
      • 这是我这几天一直在看this的绑定问题今天突然想到的一个解答,可能是错误的,之后有新的认识会继续补充。
  • 为什么要用bind等方法来绑定this?(第二次修改)
    • 这是因为在实际的使用中,原生的JS本身的一个特点就是当把一个函数赋值给一个中间变量后,再用中间变量进行函数调用时(也就是XX()这种形式),其函数中this的指向会丢失。因此React也继承了这个特点。
      以React中的onClick()为例,由于onClick是一个点击事件的中间变量名,所以当调用onClick()函数的时候其内部this的指向也会丢失,所以我们在使用的时候需要bind()函数来提前绑定好内部this的指向,防止this丢失。
      另外个人认为使用bind的场合是——在你的函数需要获取一个触发来源时,就需要一个bing()绑定,以onClick()为例,点击事件一般都需要一个触发事件的来源,所以onClick()一般都需要用bing()来绑定事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值