React基础教程(五):事件处理

事件处理

1、绑定事件

1.1、绑定方式1

<Button size={"large"} type={"primary"} onClick={ ()=>{console.log("Click1")} }>add1</Button>

1.2、绑定方式2

<Button size={"large"} type={"primary"} onClick={ this.handlerClick2 }>add2</Button>handlerClick2(){console.log("Click2")
}

1.3、绑定方式3

<Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3</Button>handlerClick3 = ()=>{console.log("Click3")
}

1.4、绑定方式4 (最为推荐此写法)

<Button size={"large"} type={"primary"} onClick={ ()=>{this.handlerClick4() // 比较推荐} }>add4</Button>handlerClick4 = ()=>{console.log("Click4")}

1.5 完整代码

import React, {Component} from "react";
import { Button, Input } from 'antd';import './css/App.css'export default class App extends Component {render() {return (<div style={{marginTop:10}}><Input style={{width:300}} size={"large"}  /><Button size={"large"} type={"primary"} onClick={ ()=>{console.log("Click1")} }>add1</Button><Button size={"large"} type={"primary"} onClick={ this.handlerClick2 }>add2</Button><Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3</Button><Button size={"large"} type={"primary"} onClick={ ()=>{this.handlerClick4() // 比较推荐} }>add4</Button></div>)}handlerClick2(){console.log("Click2")}handlerClick3 = ()=>{console.log("Click3")}handlerClick4 = ()=>{console.log("Click4")}
}

2、事件handler的写法

一般推荐handlerClick4()的写法,也会方便传参数。

import React, {Component} from "react";
import { Button, Input } from 'antd';import './css/App.css'export default class App extends Component {a = 35;render() {return (<div style={{marginTop:10}}><Input style={{width:300}} size={"large"}  /><Button size={"large"} type={"primary"} onClick={ ()=>{console.log("我能不能访问到 a= ", this.a)} }>add1</Button>&nbsp;{/*不推荐*/}<Button style={{backgroundColor:'#e37318',border:"none"}} size={"large"} type={"primary"} onClick={ this.handlerClick2.bind(this) }>add2-不推荐</Button>&nbsp;{/*比较推荐*/}<Button size={"large"} type={"primary"} onClick={ this.handlerClick3 }>add3-推荐</Button>&nbsp;{/*非常推荐*/}<Button style={{backgroundColor:'#2ba471', border:"none"}} size={"large"} type={"primary"} onClick={ ()=>{this.handlerClick4() // 非常推荐,传参数} }>add4-推荐-传参</Button></div>)}/*bind:改变this,手动执行函数call:改变this,自动执行函数apply:改变this,自动执行函数*/// 不推荐这种写法handlerClick2(){console.log(this); // undefinedconsole.log("Click2", this.a); // 报错}// 推荐写法,传参数就不太方便了handlerClick3 = ()=>{console.log("Click3", this.a) // 35。箭头函数}handlerClick4 = ()=>{console.log("Click4", this.a) // 35.箭头函数}}

注意:

如果调用handlerClick2的时候this.handlerClick2.bind(this)这里不加 .bind(this),那么这里的 this 就无法获取,就是 undefined,调用 this.a 就会报错。

handlerClick3handlerClick4都是采用箭头函数的写法,可以正常获取到this

handlerClick4()的写法方便传递参数,最推荐用此写法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新书推荐:2.2.4 第11练:消息循环

/*------------------------------------------------------------------------ 011 编程达人win32 API每日一练 第11个例子GetMessage.c&#xff1a;消息循环 MSG结构 GetMessage函数 TranslateMessage函数&#xff1a;将虚拟键消息转换为字符消息 DispatchMessage函数…

信息系统项目管理师0148:输出(9项目范围管理—9.3规划范围管理—9.3.3输出)

点击查看专栏目录 文章目录 9.3.3 输出 9.3.3 输出 范围管理计划 范围管理计划是项目管理计划的组成部分&#xff0c;描述将如何定义、制定、监督、控制和确认项 目范围。范围管理计划用于指导如下过程和相关工作&#xff1a; ①制定项目范围说明书&#xff1b;②根据详细项目范…

【机器学习】XGBoost: 强化学习与梯度提升的杰作

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 XGBoost: 强化学习与梯度提升的杰作引言1. XGBoost概览1.1 什么是XGBoost&#…

纷享销客安全体系:安全运维运营

安全运维运营(Security Operations,SecOps)是指在信息安全管理中负责监控、检测、响应和恢复安全事件的一系列运营活动。它旨在保护组织的信息系统和数据免受安全威胁和攻击的损害。 通过有效的安全运维运营&#xff0c;组织可以及时发现和应对安全威胁&#xff0c;减少安全事…

09.2手工制作docker镜像-kod服务

手工制作docker镜像-kod服务 基于centos6.9系统镜像&#xff0c;搭建kod服务&#xff0c;提交镜像 创建并进入容器 添加centos6系统的yum源和epel源 yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo epel源 curl -o /e…

定时器的使用和实现

目录 一.定时器Timer类的主要方法 二.定时器Timer类的使用 三.定时器的模拟实现 一.定时器Timer类的主要方法 定时器Timer类在java.util包中。 使用前先进行实例化&#xff0c;然后使用实例的schedule(TimerTask task, long delay)方法&#xff0c;设定指定的任务task在指…

微信小程序按钮设计与交互:打造极致用户体验

微信小程序作为一种流行的应用形式&#xff0c;其界面设计和交互体验对于用户吸引力和留存率至关重要。其中&#xff0c;按钮作为用户与小程序进行交互的主要方式之一&#xff0c;其设计和实现直接影响到用户体验的质量。在本文中&#xff0c;我们将探讨微信小程序按钮的设计与…

因为附件服务重启的问题

生产的服务器出现以下现象&#xff1a; 1.API报503&#xff0c; 2.不停的重启 发现是OOM的错误。 作为经验法则&#xff0c;有几种常见的OOM情况。 堆内存溢出。如内存泄漏。 虚拟机栈和本地方法栈溢出。如有无限的递归方法。 JVM内存消耗超过容器限制。 从上面的截图中&…

python数据分析-心脏瓣膜手术风险分析与预测

研究背景 人的心脏有四个瓣膜&#xff0c;主动脉银、二尖、肺动脉和三尖源 不管是那一个膜发生了病变&#xff0c;都会导致心脏内的血流受到影响&#xff0c;这就是通常所说的心脏期膜病&#xff0c;很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,&#xff0c;心…

8. 正则表达式

正则表达式 在处理字符串时&#xff0c;需要查找符合某些复杂规则的字符串&#xff0c;正则表达式就是用于描述这些规则的工具 一、正则表达式语法 行定位符&#xff1a;用来描述字符串的边界 -->用来匹配一整行 符号匹配位置^行的开始$行的结尾 ^tm : 可以匹配行 tm equa…

DevOps 安全集成:从开发到部署,全生命周期安全守护

目录 一、DevOps 安全集成&#xff1a;为什么要做&#xff1f; 二、DevOps 安全集成&#xff1a;如何做&#xff1f; 三、DevOps 安全集成的优势 四、DevOps 安全集成&#xff1a;一些最佳实践 五、DevOps 安全集成&#xff1a;未来展望 六、思考与建议 七、总结 DevOps…

Perl 运算符

Perl 运算符 Perl 是一种功能强大的编程语言,广泛应用于系统管理、网络编程、GUI 创建、数据库访问等众多领域。Perl 的语法灵活,支持多种编程范式,包括过程式、面向对象和函数式编程。在 Perl 中,运算符扮演着重要的角色,它们用于执行各种操作,如算术运算、比较、赋值等…

高质量 HarmonyOS 权限管控流程

高质量 HarmonyOS 权限管控流程 在 HarmonyOS 应用开发过程中&#xff0c;往往会涉及到敏感数据和硬件资源的调动和访问&#xff0c;而这部分的调用就会涉及到管控这部分的知识和内容了。我们需要对它有所了解&#xff0c;才可以在应用开发中提高效率和避免踩坑。 权限管控了…

19、Go Gin框架集成Swagger

介绍&#xff1a; Swagger 支持在 Gin 路由中使用一系列注释来描述 API 的各个方面。以下是一些常用的 Swagger 注释属性&#xff0c;这些属性可以在 Gin 路由的注释中使用&#xff1a; Summary: 路由的简短摘要。Description: 路由的详细描述。Tags: 用于对路由进行分类的标…

跟我学C++高级篇——回调函数及应用

一、回调函数 什么是回调函数&#xff1f;顾名思意&#xff0c;回调函数就是调用方被&#xff08;被调用方&#xff09;调用&#xff0c;有点绕口啊。一般的函数调用&#xff0c;都是一方向另一方发起调用&#xff0c;然后得到调用的结果。一般情况下&#xff0c;回调函数通过…

Unity中的CanvasScaler组件讲解

Unity中的CanvasScaler组件是UGUI系统中的一个关键组件&#xff0c;主要用于控制画布的缩放和适配&#xff0c;以确保UI在不同屏幕分辨率下的显示效果一致。以下是关于CanvasScaler组件的详细讲解&#xff1a; 一、CanvasScaler组件的作用 调整UI画布的缩放和分辨率适配&…

数据挖掘--数据仓库与联机分析处理

什么是数据仓库 &#xff08;面集时非&#xff09; 面向主题的&#xff1a;围绕某一主题来构建集成的&#xff1a;图片文字杂糅在一起时变的&#xff1a;随时间变化的数据非易失的&#xff1a;硬盘存放&#xff0c;不易丢失 操作数据库系统&#xff08;OLTP)与数据仓库(OLAP…

MySQL将错乱的水果信息,截取展示为 品名 英文名 价格 三列展示

将错乱的水果信息&#xff0c;截取展示为 品名 英文名 价格 三列展示 idname1苹果Apple72Plum6李子3Pineapple8菠萝4Mango5芒果5龙吐珠5Buddha’sHand6Olive9橄榄7Raspberry4树莓8Apricot5杏子9Grapefruit9柚子10火龙果Dragonfruit911倒挂金钟Hanging6LobsterClaw12巨峰葡萄Co…

AI办公自动化:批量把docx文档转换为txt文本

任务&#xff1a;把docx文档批量转换成txt&#xff0c;首先让deepseek写了一段代码&#xff0c;但是转换失败。用的是最流行的python-docx库来读取docx文档&#xff0c;但是始终无法读取成功&#xff0c;换成pywin32库就解决问题了。 在deepseek中输入提示词&#xff1a; 写一…

「前端+鸿蒙」鸿蒙应用开发-真机运行

在鸿蒙应用开发中&#xff0c;真机运行是验证应用在实际硬件上表现的重要步骤。以下是如何在华为DevEco Studio中配置真机运行的详细步骤&#xff0c;以及相应的示例代码。 快速体验-真机运行 准备工作&#xff1a; 确保您的鸿蒙设备已开启开发者模式&#xff0c;并启用USB调试…