当前位置: 首页 > news >正文

React 事件处理基础

React 中最常见的两个需求,一个是列表渲染,另一个就是绑定点击事件。
这一篇就是从最基础的按钮点击开始,分四个阶段,逐步理解 React 中事件的写法和参数传递方式。


📍阶段一:最简单的点击事件

function App() {const handleClick = () => {console.log('button 被点击了')}return (<div className="App"><button onClick={handleClick}>click me</button></div>)
}

解释:

  • 这里的 onClick 就是标准的 JSX 写法。
  • 它接收一个函数引用,handleClick 就是点击时要执行的逻辑。
  • 注意:不能直接写 handleClick(),否则是页面加载时就执行了,而不是等用户点击才执行。

📍阶段二:获取事件对象 e

const handleClick = (e) => {console.log('button 被点击了', e)
}

解释:

  • React 会把合成事件对象作为第一个参数传给事件处理函数。
  • 虽然它看起来像原生事件,其实是 React 做了一层封装,叫 SyntheticEvent
  • 常见属性(如 e.targete.type)都能用。

📍阶段三:传递自定义参数

const handleClick = (name) => {console.log('button 被点击了', name)
}<button onClick={() => handleClick('jack')}>click me</button>

解释:

  • 如果想给事件函数传参数,那就要用箭头函数包一层。
  • 这里 handleClick('jack') 是传参形式,但要注意这样每次渲染都会生成一个新函数。
  • 所以不要在大列表里滥用(比如 list.map 时)。

📍阶段四:既传参,又保留事件对象 e

const handleClick = (name, e) => {console.log('button 被点击了', name, e)
}<button onClick={(e) => handleClick('jack', e)}>click me</button>

解释:

  • 想要两个参数:一个是自定义的,另一个是系统传的 e,就得手动写出来。
  • 顺序不能反,因为 React 默认把事件作为第一个参数。
  • 所以我们得用箭头函数先拿到 e,再把 namee 一起传给 handleClick

✅ 总结(写给自己的话)

  1. React 的事件是合成事件,不是原生 DOM 的 onclick,但基本用法类似。
  2. 如果直接写函数名,就是传引用;想要传参数就要用箭头函数包装
  3. 想要拿到事件对象 e,要么写 (e) => ...,要么作为 handleClick(e) 的参数显式声明。
  4. JSX 里不能直接调用函数(比如 onClick={handleClick()}),这样会直接执行,而不是绑定。

这一块内容写得越清楚越好,因为几乎所有交互逻辑都绕不开事件系统。写组件的时候,判断点击了谁、传了什么、触发了什么,最后全都绕回这个函数定义上。

后续我可能会再整理:

  • 事件冒泡和阻止传播
  • React 如何模拟事件池
  • 在组件中统一封装多个事件处理逻辑

这一篇算是打基础,理解透之后,用起来会非常自然。

http://www.xdnf.cn/news/12007.html

相关文章:

  • 简单好用的在线工具
  • Webpack基础
  • PHP8.2.9NTS版本使用composer报错,扩展找不到的问题处理
  • 清华大学李升波教授的强化学习Tutorial Lecture
  • 2D物体检测学习
  • Linux 系统编程 day4 进程管道
  • 多线程使用——多线程的创建和常用方法
  • 2025年MathorCup数学应用挑战赛【选题分析】
  • Android tinyalsa库函数剖析
  • nginx 在 windows 中 部署 jar包 和 dist包
  • 深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
  • goland做验证码识别时报“undefined: gosseract.NewClient”
  • 哪种电脑更稳定?Mac?Windows?还是云电脑? 实测解密
  • 对WAV文件进行降噪
  • 探索 Higress:下一代云原生 API 网关
  • ulauncher软件启动器
  • Nacos 中使用了哪些缓存?缓存的目的是什么?是如何实现的?
  • 基于领域知识的A型主动脉夹层综合分割及面向临床的评估|文献速递-深度学习医疗AI最新文献
  • 获取不到AndroidManifest中的meta-data
  • AI Agents系列之构建多智能体系统
  • 《奇迹世界起源》:神之月晓活动介绍!
  • 不确定与非单调推理的概率方法
  • 安全光幕的CE认证
  • 项目计划管理系统怎么选?15款项目管理工具详评
  • Flutter与FastAPI的OSS系统实现
  • 【系统架构设计师】统一过程模型(RUP)
  • 什么是爬虫?——从技术原理到现实应用的全面解析
  • Scrapeless Scraping Browser: A high-concurrency automation solution for AI
  • 高翔《视觉SLAM十四讲》第7章对极几何相关内容,对极约束分析讲解
  • 文章记单词 | 第38篇(六级)