【07】基础知识:React中的事件处理

news/2024/7/15 17:26:59 标签: react.js, javascript, 前端

React 中 通过 onXxx 属性指定事件处理函数(注意大小写),通过 event.target 得到发生事件的 DOM 元素对象

不要过度使用 ref (比如,元素获取自身属性时,通过 event 对象,而不是 ref)

原理

为了更好的兼容性:React 使用的是自定义(合成)事件,而不是使用的原生 DOM 事件

为了的高效:React 中的事件是通过事件委托方式处理的(委托给组件最外层的元素)

code:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>事件处理</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>

	<!-- 引入react核心库 -->
	<script type="text/javascript" src="../js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="../js/react-dom.development.js"></script>
	<!-- 引入babel,用于将jsx转为js -->
	<script type="text/javascript" src="../js/babel.min.js"></script>

	<script type="text/babel">javascript">
		// 创建组件
		class Demo extends React.Component {
			// 创建ref容器
			myRef = React.createRef()
			myRef2 = React.createRef()

			// 展示左侧输入框的数据
			showData = (event) => {
				console.log('left', event) // event 为 按钮
				alert(this.myRef.current.value)
			}

			// 展示右侧输入框的数据
			showData2 = (event) => {
				console.log('right', event) // event 为 右侧 input
				alert(event.target.value)
			}

			render() {
				return (
					<div> {/* 事件委托机制,React会把事件加在最外层元素,div 身上 */}
						<input ref={this.myRef} type="text" placeholder="点击按钮提示数据" />&nbsp;
						<button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;
						<input onBlur={this.showData2} type="text" placeholder="失去焦点提示数据" />&nbsp;
					</div>
				)
			}
		}
		// 渲染组件到页面
		ReactDOM.render(<Demo />, document.getElementById('test'))
	</script>
</body>

</html>

http://www.niftyadmin.cn/n/5088804.html

相关文章

代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树

代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树 文章链接&#xff1a;修剪二叉搜索树 将有序数组转换为二叉搜索树 把二叉搜索树转换为累加树 视频链接&#xff1a;修剪二叉搜…

Tuxera NTFS软件安装包2024最新中文版(.dmg)

NTFS是Windows系统默认的文件系统格式&#xff0c;它的优点是支持大文件和大容量&#xff0c;而且有一定的安全性和稳定性&#xff0c;但是它的缺点是只能在Windows系统中读写&#xff0c;其他系统只能读不能写。如果是NTFS格式&#xff0c;那么我们就需要借助一些第三方软件来…

Python安装和环境配置教程

进官网根据不同的操作系统&#xff0c;下载适合自己的编译环境&#xff08;在百度里直接输入Python&#xff09; 选择安装包&#xff08;我选择的是3.8.0版本&#xff09; python官方下载目录中有好多种安装方式&#xff0c;一般情况选择Windows x86-64 executable installer …

卸载各种方式安装的K8S集群

1. 首先清理运行到k8s群集中的pod&#xff0c;使用 kubectl delete node --all2. 使用脚本停止所有k8s服务 for service in kube-apiserver kube-controller-manager kubectl kubelet etcd kube-proxy kube-scheduler; dosystemctl stop $service done# 3. 使用命令卸载k8s …

整理mongodb文档:搭建分片集群

个人博客 整理mongodb文档:搭建分片集群 分片集群在MongoDB中的的使用并没有那么多&#xff0c;更多的还是副本集&#xff0c;所以本文就不讲解那么多&#xff0c;只是搭建一个最基本的分片集群&#xff0c;让大家有个了解。个人公众号&#xff0c;求关注。 文章概叙 本文主…

台达DOP-B07S410触摸屏出现HMI no response无法上传的解决办法

台达DOP-B07S410触摸屏出现HMI no response无法上传的解决办法 台达触摸屏(B07S410)在上载程序时(显示No response from HMI)我以前的电脑是WIN7的,从来没出现过这样的问题,现在换成win10的,怎么都不行,(USB显示是一个大容量存储)换一台电脑(win10)有些行,有些不行…

基于天牛须优化的BP神经网络(分类应用) - 附代码

基于天牛须优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于天牛须优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.天牛须优化BP神经网络3.1 BP神经网络参数设置3.2 天牛须算法应用 4.测试结果&#x…

【Java】jdk9为何要将String的底层实现由char[]改为byte[]

问题&#xff1a;从jdk9 String 的底层实现由 char[] 改为了 byte[] 答案&#xff1a;节省 String 占用 jvm 的内存空间 JDK1.8 String类型底层实现 基于 char[] 类型数组实现 JDK1.9开始 String类 底层实现 char[] 类型数组改为 byte[],下面的是JDK11 下一篇文章&#xff1a; …