当前位置:首页 > 日记 > 正文

React学习之事件绑定的几种方法对比

React学习之事件绑定的几种方法对比

前言

本文主要给大家介绍了关于React事件绑定的几种方法对比的相关呢荣,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

React事件绑定

由于类的方法默认不会绑定this,因此在调用的时候如果忘记绑定,this的值将会是undefined。

通常如果不是直接调用,应该为方法绑定this。绑定方式有以下几种:

1. 在构造函数中使用bind绑定this

class Button extends React.Component {constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); } handleClick(){ console.log('this is:', this); } render() { return (  <button onClick={this.handleClick}>  Click me  </button> ); }}

2. 在调用的时候使用bind绑定this

class Button extends React.Component { handleClick(){ console.log('this is:', this); } render() { return (  <button onClick={this.handleClick.bind(this)}>  Click me  </button> ); }}

3. 在调用的时候使用箭头函数绑定this

class Button extends React.Component { handleClick(){ console.log('this is:', this); } render() { return (  <button onClick={()=>this.handleClick()}>  Click me  </button> ); }}

4. 使用属性初始化器语法绑定this(实验性)

class Button extends React.Component { handleClick=()=>{ console.log('this is:', this); } render() { return (  <button onClick={this.handleClick}>  Click me  </button> ); }}

比较

方式2和方式3都是在调用的时候再绑定this。

  • 优点:写法比较简单,当组件中没有state的时候就不需要添加类构造函数来绑定this
  • 缺点:每一次调用的时候都会生成一个新的方法实例,因此对性能有影响,并且当这个函数作为属性值传入低阶组件的时候,这些组件可能会进行额外的重新渲染,因为每一次都是新的方法实例作为的新的属性传递。

方式1在类构造函数中绑定this,调用的时候不需要再绑定

  • 优点:只会生成一个方法实例,并且绑定一次之后如果多次用到这个方法也不需要再绑定。
  • 缺点:即使不用到state,也需要添加类构造函数来绑定this,代码量多一点。。。

方式4:利用属性初始化语法,将方法初始化为箭头函数,因此在创建函数的时候就绑定了this。

  • 优点:创建方法就绑定this,不需要在类构造函数中绑定,调用的时候不需要再作绑定。结合了方式1、方式2、方式3的优点
  • 缺点:目前仍然是实验性语法,需要用babel转译

总结

方式1是官方推荐的绑定方式,也是性能最好的方式。方式2和方式3会有性能影响并且当方法作为属性传递给子组件的时候会引起重渲问题。方式4目前属于实验性语法,但是是最好的绑定方式,需要结合bable转译

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

相关文章

JavaScript实现焦点进入文本框内关

JavaScript实现焦点进入文本框内关

核心,文本框,输入法,代码,焦点,js实现焦点进入文本框内关闭输入法:imeMode要用到的东西: imeMode:xxx有四个参数active 代表输入法为中文inactive 代表输入法为英文auto 代表打开输入法 (默认)disable 代表关闭输入法<INPUT onfocus=" thi…

微信小程序 连续旋转动画(this.anim

微信小程序 连续旋转动画(this.anim

连续,旋转动画,详解,程序,电脑软件,微信小程序 连续旋转动画一、.js中封装旋转动画方法  添加animation属性data:{ animation:''" }  改变animation的值(官网提供角度范围是-180~180,但是我发现角度越大会一直旋转)onShow: funct…

Excel中图表坐标轴的数值怎么修改

Excel中图表坐标轴的数值怎么修改

图表,修改,坐标轴,数值,电脑软件,  在制作Excel表格时,通常会图表结合,帮助我们更清晰的理解,也能更精确的分析。但有时候需要改变坐标轴的数值时,应该用什么办法更好修改呢?以下是小编为您带来的关于Excel中图表坐标轴的数值修改,希望对您有…

excel代入公式的详细图解教程

excel代入公式的详细图解教程

代入,方法,教程,公式,详细,  Excel中经常需要使用到代入公式的技巧,这样更方便我们进行计算操作。代入公式其实并不难,还没有掌握这一方法的小伙伴,可以看看以下关于excel代入公式的方法,希望阅读过后对你有所启发!excel代入公式的方法代入公…

Bootstrap modal只加载一次数据的

Bootstrap modal只加载一次数据的

加载,推荐,数据,解决办法,电脑软件,1. Bootstrap 模态对话框和简单使用 <div id="myModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">x</button> <h3>…

怎样对Excel2007表格中的值作出评

怎样对Excel2007表格中的值作出评

评价,表格,电脑软件,Excel,  对Excel中的值作出评价,简单地说,评价就是让数值变成汉字。还是不懂?没关系,以下是小编为您带来的关于对Excel表格中的值作出评价,希望对您有所帮助。对Excel表格中的值作出评价1 用Excel2007打开一篇工作表,并选…

WPS演示怎样制作倒计时效果WPS制作

WPS演示怎样制作倒计时效果WPS制作

方法,倒计时,效果,演示,电脑软件,  利用WPS演示制作一个提醒同学们上课的倒计时效果。下面是小编为大家整理的WPS演示制作倒计时效果的方法,希望大家能够从中有所收获!WPS演示制作倒计时效果的方法WPS演示制作倒计时效果的步骤1:启动WPS演…

20行JS代码实现网页刮刮乐效果

20行JS代码实现网页刮刮乐效果

代码实现,网页,效果,电脑软件,JS,分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下盖伦.jpg刮刮乐.gifHTML部分<body> ![](img/gailun.jpg) <canvas id="canvas" width="400" height="300"></canvas> </bo…

最新下雨天心情一句话表达心情说说

最新下雨天心情一句话表达心情说说

下雨天,心情,句话,最新,雨天,  下雨天,心情也跟着惆怅,用一句话来表达下雨天的心情.今天小编带来精选下雨天心情个性签名 下雨天心情说说、下雨天心情好、心情不好的说说&hellip;&hellip; 欢迎大家阅读。===更多热门的下雨天说说、下雨天图…

微信小程序遇到修改数据后页面不渲

微信小程序遇到修改数据后页面不渲

数据,修改,页面,程序,电脑软件,微信小程序遇到修改数据后页面不渲染的问题解决前言:去年从小程序一开始出来到现在,我一直是比较看好和保持一定的关注度的,小程序的掀起的波浪我觉得一开始是在前端及其他技术开发人群中的,这是我第一次有意识的…

JavaScript你不知道的一些数组方法

JavaScript你不知道的一些数组方法

数组方法,你不知道,电脑软件,JavaScript,concatvar a = [1,2,3];a.concat([4,5,6],7,8);//[1,2,3,4,5,6,7,8]注意,a数组并没有改变,只是返回了一个新数组。copyWithin它接受三个参数。target (必需):从该位置开始替换数据。start (可选):从该位置开…

Excel中2010版进行导入网站数据的

Excel中2010版进行导入网站数据的

网站,数据,操作技巧,操作步骤,电脑软件,  在Excel中,可以利用&ldquo;获取外部数据&rdquo;功能导入网页中的数据。今天,小编就教大家在Excel中2010版进行导入网站数据的操作技巧。Excel中2010版进行导入网站数据的操作步骤单击&ldquo;自网站…