react回调函数_React中的回调中自动绑定ES6类函数
在使用ES6类的React组件时,您必须遇到这种现象,必须显式绑定类函数,然后将其传递给诸如onClick
。例如,采用以下示例。
import React from 'react';class MyComponent extends React.Component {constructor(props) {super(props);this.state = {clicked: false};this.btnClick = this.btnClick.bind(this);}btnClick() {this.setState({clicked: true})}render() {return(<div><ul><li onClick={this.btnClick}>Hello World</li></ul></div>);}
}
如您在上面的示例中看到的那样,为了使btnClick
工作正常,我们需要在构造函数中明确地“绑定”该方法。如果我们没有这样做,JavaScript将无法this
在该btnClick
方法中识别。这是因为在JavaScript中,默认情况下未绑定类方法。因此,在使用绑定方法后bind()
,它将创建一个新的绑定函数,这是一个包装原始函数对象的奇异函数对象(来自ECMAScript 2015的术语)。这将提供this
对回调函数的访问。在我们的情况下为btnClick
。
使用公共类字段语法
基本上,公共类字段语法是Babel提供的实验功能。在这里,您可以使用类字段正确绑定回调。这是上面的示例使用此语法的样子。
import React from 'react';class MyComponent extends React.Component {state = {clicked: false}btnClick = () => {this.setState({clicked: true})}render() {return(<div><ul><li onClick={this.btnClick}>Hello World</li></ul></div>);}
}
正如您在上面看到的,我们不再需要定义类的构造函数,因为class字段将实例化该类实例的属性值。除此之外,由于我们现在使用JavaScript的数组函数语法,我们不再需要显式绑定该函数,因为this
箭头函数内的作用域指向父作用域。
在回调中使用箭头功能
import React from 'react';class MyComponent extends React.Component {constructor(props) {super(props);this.state = {clicked: false};}btnClick() {this.setState({clicked: true})}render() {return(<div><ul><li onClick={(e) => this.btnClick(e)}>Hello World</li></ul></div>);}
}
但是,这种方法有一个缺点。因此,基本上,每次MyComponent
渲染都会创建一个不同的回调。如果将此回调作为对较低组件的支持而传递,则可能会出现问题,这些组件可能会进行额外的重新渲染,这可能会降低渲染组件时的性能。
文章参考来源:React中的回调中自动绑定ES6类函数
react回调函数_React中的回调中自动绑定ES6类函数相关推荐
- 【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )
文章目录 I . FFMPEG 播放视频流程 II . OpenSLES 播放音频流程 III . OpenSLES 播放参考 Google 官方示例 IV . OpenSL ES 播放代码 ( 详细 ...
- 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )
文章目录 I . AAudio 音频流 采样 缓冲 播放 的连续机制 II . AAudio 音频流 数据回调函数 函数指针类型定义 III . AAudio 音频流 数据回调函数 实现 IV . A ...
- 回调函数、Java接口回调 总结
回调函数 谈到回调,我们得先从回调函数说起,什么叫回调函数呢? 回调函数是什么? 百度百科的解释:回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针 ...
- 回调函数举例ajax,通过回调函数的理解来进一步理解ajax及其注意的用法
一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...
- 阻塞式回调函数和延迟式回调函数
首先,有三种函数: 起始函数:大致可以等同于主函数 中间函数:中间函数把回调函数作为参数传递执行 回调函数:一个有独立功能的函数 怎么理解: 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里 ...
- java jna 回调函数_JNA中级篇 回调函数详解
JNI 技术是双向的,既可以从Java 代码中调用原生函数,也可以从原生函数中直接创建 Java 虚拟机,并调用Java 代码.但是在原生函数中调用java代码要写大量C代码,这对大多数java程序员 ...
- 回调函数 相当于线程_Java中的回调机制,这篇给你整的明明白白的
作者:带妳心菲 cnblogs.com/prayjourney/p/9667835.html 调用和回调机制 在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种: ...
- 查看回调函数执行在那个线程中的方法
在回调函数中加入: messagebox.show(system.threading.thread.currentthread.managedthreadid.tostring());
- js中的回调函数,什么是回调函数?
一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为函数实际上是一种对象,即是内置对象 ...
最新文章
- linux 系统打造man中文帮助手册图解
- Java虚拟机new和newarray相关指令学习
- Codeforces 1338 题解
- 关于贝叶斯的一个小小的总结
- 帆软助力惠科集团产值提升1%以上,带来上亿元数据价值
- shell如何自动输入密码
- linux 创建LVM磁盘
- python可以做什么工作-python都能干什么用
- iOS 让UIButton根据文字内容自动计算宽高
- java exe 反编译工具_windows下java反编译工具
- php实现身份证号码获取归属地地址的实例
- wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
- 旅游网站首页——html
- 吕文翰 php,自己动手写一个 iOS 网络请求库(三)——降低耦合
- 质谱和蛋白质组学领域简述
- Python基础语法(一)——变量定义和运算符的使用
- cesium加载气象数据
- Android 11.0 12.0系统默认开启wifi
- 矩阵理论的发展史简介
- 平均查找长度之二分查找 -【Java】
热门文章
- 编写高性能 Web 应用程序的10个技巧
- 盘点提高程序员技术的5个免费编程网站,你知道几个?
- 极简 响应式 html5,HTML5----响应式(自适应)网页设计
- 送书 | 推荐一个可能是最全的Venn图一站式绘制工具
- plc维修入门与故障处理实例_电气控制基础+PLC编程入门+工程应用实例
- 简单英文题 16 Maximum Sum Not Exceeding K(python)
- 好用的重装系统前使用的windows系统软件名称导出备份工具
- STM32H743+CubeMX-QSPI读写外部FLASH(W25Q128JVSQ)
- 【ES6(2015)】RegExp
- python读取txt文件每一行存为列表,从txt文件中读取一定数量的行,并以python方式转换为list...