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版本并存,例如微前端
相关推荐
我是伪码农3 小时前
Vue 1.28
前端·javascript·vue.js
鹓于3 小时前
Excel一键生成炫彩二维码
开发语言·前端·javascript
siwangdexie_new3 小时前
html格式字符串转word文档,前端插件( html-docx-js )遇到兼容问题的解决过程
前端·javascript·html
2601_949613023 小时前
flutter_for_openharmony家庭药箱管理app实战+用药提醒列表实现
服务器·前端·flutter
利刃大大3 小时前
【Vue】scoped作用 && 父子组件通信 && props && emit
前端·javascript·vue.js
-凌凌漆-3 小时前
【Vue】Vue3 vite build 之后空白
前端·javascript·vue.js
心柠3 小时前
前端工程化
前端
摘星编程3 小时前
用React Native开发OpenHarmony应用:useImperativeHandle暴露实例方法
javascript·react native·react.js
沐雪架构师3 小时前
核心组件2
前端
qq_336313933 小时前
javaweb-Vue3
前端·javascript·vue.js