-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
面试官:React事件绑定的方式有哪些?区别? #187
Comments
时隔多年,终于搞懂了一些 |
hook之后没人这么玩了,只能面试用用 |
1. 内联函数绑定这是最直接的绑定方式,通常在元素的 JSX 属性中内联定义一个函数。
2. 类方法绑定对于类组件,需要在类的构造函数中使用 使用 bind 方法
使用箭头函数
3. 函数组件中的事件绑定在函数组件中,可以直接通过钩子如
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一、是什么
在
react
应用中,事件名都是用小驼峰格式进行书写,例如onclick
要改写成onClick
最简单的事件绑定如下:
从上面可以看到,事件绑定的方法需要使用
{}
包住上述的代码看似没有问题,但是当将处理函数输出代码换成
console.log(this)
的时候,点击按钮,则会发现控制台输出undefined
二、如何绑定
为了解决上面正确输出
this
的问题,常见的绑定方式有如下:render方法中使用bind
如果使用一个类组件,在其中给某个组件/元素一个
onClick
属性,它现在并会自定绑定其this
到当前组件,解决这个问题的方法是在事件函数后使用.bind(this)
将this
绑定到当前组件中这种方式在组件每次
render
渲染的时候,都会重新进行bind
的操作,影响性能render方法中使用箭头函数
通过
ES6
的上下文来将this
的指向绑定给当前组件,同样再每一次render
的时候都会生成新的方法,影响性能constructor中bind
在
constructor
中预先bind
当前组件,可以避免在render
操作中重复绑定定义阶段使用箭头函数绑定
跟上述方式三一样,能够避免在
render
操作中重复绑定,实现也非常的简单,如下:三、区别
上述四种方法的方式,区别主要如下:
综合上述,方式四是最优的事件绑定方式
参考文献
The text was updated successfully, but these errors were encountered: