React合成事件

一、合成事件

    1. event 是 SyntheticEvent ,模拟出来 DOM 事件所有能力
    1. event.nativeEvent 是原生事件对象
    1. 所有的事件,都被挂载到 document 上(React ≤ 16),React17之后是挂载到root组件
    1. 和 DOM 事件不一样,和 Vue 事件也不一样

      div触发事件,DOM事件冒泡到document上,
      document会生成一个统一的合成事件对象
      再派发事件

二、为什么要合成事件机制?

1、更好的兼容性和跨平台

自己实现一套事件机制,尽可能摆脱了DOM事件的逻辑, 更好的兼容性和跨平台

2、挂载到document, 减少内存消耗,避免频繁解绑

事件挂载越多,内存消耗越高,(不用给每个子元素挂载事件,使用冒泡)

看似事件挂载到组件上,其实是在document,组件销毁的时候,也不用解绑事件

3、方便事件的统一管理(如事务机制)

三、React事件绑定

  • React16 绑定到document
  • React 17 18绑定到root组件
  • 有利于多个React版本并存,例如微前端
相关推荐
打瞌睡的朱尤36 分钟前
Vue day9 购物车,项目,vant组件库,vw,路由
前端·javascript·vue.js
星火开发设计3 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
cc.ChenLy5 小时前
【CSS进阶】毛玻璃效果与代码解析
前端·javascript·css
何中应5 小时前
使用Jenkins部署前端项目(Vue)
前端·vue.js·jenkins
3秒一个大5 小时前
JWT 登录:原理剖析与实战应用
前端·http·代码规范
一只大侠的侠5 小时前
React Native for OpenHarmony:日期范围选择器实现
javascript·react native·react.js
NEXT065 小时前
2026 技术风向:为什么在 AI 时代,PostgreSQL 彻底成为了全栈工程师的首选数据库
前端·数据库·ai编程
NEXT065 小时前
拒绝“盲盒式”编程:规范驱动开发(SDD)如何重塑 AI 交付
前端·人工智能·markdown
@大迁世界6 小时前
仅用 CSS 实现元素圆形排列的方法
前端·css
一只大侠的侠6 小时前
React Native for OpenHarmony:DatePicker 日期选择器组件详解
javascript·react native·react.js