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