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版本并存,例如微前端
相关推荐
Cxiaomu19 分钟前
像ChatGPT一样逐字输出:React + TypeScript 流式接收与“打字机”效果实现方案
人工智能·react.js·chatgpt·typescript
qq_3813385032 分钟前
[特殊字符] MonkeyCode AI 核心功能详解
前端
万邦科技Lafite41 分钟前
淘宝关键词API接口获取分类商品信息指南
java·前端·数据库·开放api·淘宝开放平台
KevinCyao41 分钟前
教育营销短信接口开发实战:培训机构接入营销短信API实现招生信息精准触达
前端
WordPress学习笔记1 小时前
GraceTheme定义“优雅大气”的WordPress主题新标准
前端·wordpress·wordpress主题
雨季mo浅忆1 小时前
2999第二项目梳理
前端·项目梳理
炘爚1 小时前
C++(移动构造、移动赋值、完美转发)
前端·c++
淡忘_cx1 小时前
解决 Vite EACCES 权限错误:从报错到修复的完整指南
前端·vue
We་ct1 小时前
LeetCode 191. 位1的个数:两种解法详解
前端·算法·leetcode·typescript