react解惑

个人学习笔记,如有错误请见谅。

1为什么监听事件,this.A需要bind(this),而()=>{this.A}就不用。为什么this.A.bind()会直接默认传event过去,而(e)=>{this.A(e)}要自己传过去。

首先,onClick=this.A,是将A方法传给onClick,而React内部会做这样一件事情,onClick.call(undefined,event),会改变A的this指向为undefined,而且默认传一个event过去,这也就是为什么我们要用bind(this)改变A的this指向,因为bind的优先级是高于call的。
在这里插入图片描述

而onClick=()=>{},是将箭头函数传给onClick,而箭头函数不管怎么显示绑定this,都不会改变其指向,因为箭头函数默认没有this,他的this是通过向外层找的。而且()=>{}.call(undefined,event),也会传一个event过去,而我们如果要在箭头函数里再调用我们的A方法,就得通过event主动传过去了,因为call只是把event传给箭头函数,而不是A,所以当我们调用A时,要把event传过去。而这也说明为什么箭头函数调用A不用改变this指向。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lin_fightin/article/details/111352777
今日推荐