React中的合成事件解释和理解

什么是合成事件(Synthetic event)?它和原生事件有什么区别?

解题思路:解释合成事件,然后对比原生事件,然后再说他的优势

1.一致性

在 react里面,这个合成事件是非常重要的,因为它就是为了解决浏览器之间与事件模型的一些差异,像一些不同的浏览器,对事件的绑定与解绑机制都是会有区别的,如果说react不去抽象这样一层,到了别的平台他去实现事件的响应和处理都会出现问题的,于是他在原生事件和我们编写的代码中间给他来了一层中间层,这一层也就是合成事件,说白了就是避免浏览器差异引起的问题,为了保持一致性

2.事件池化

react在合成事件对象的实现中采用了事件池化策略,这意味着当事件处理完之后,react会将事件对象重新放回到池中,而不是保留每个事件的实例,从而减少消耗内存,事件池化的实现意味着事件对象只能在回调函数中访问,而回调执行后,属性会被清空

3.统一的接口

合成事件封装了标准的原生事件接口,并提供了一致的API来访问事件的属性,如event.target,event.preventDefault()和event.stopPrepageation();

区别:

1.浏览器的兼容性,合成事件更好,因为原生的事件对于各种浏览器处理,订阅机制不一样.

2.react的合成事件会通过事件池的来优化订阅的函数 ,比如useMemo,useCallBack这些函数都可以去缓存函数,和事件池一样的机制

3.在性能优化方面,原生事件每次都会创建一个事件对象,对性能影响非常大,但合成事件,它是通过事件池来解决的,从而减少了内存的消耗

相关推荐
EndingCoder1 分钟前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
用户47949283569152 分钟前
React 终于出手了:彻底终结 useEffect 的"闭包陷阱"
前端·javascript·react.js
程序员猫哥9 分钟前
前端开发,一句话生成网站
前端
Younglina29 分钟前
一个纯前端的网站集合管理工具
前端·vue.js·chrome
木头程序员31 分钟前
前端(包含HTML/JavaScript/DOM/BOM/jQuery)基础-暴力复习篇
开发语言·前端·javascript·ecmascript·es6·jquery·html5
卖火箭的小男孩32 分钟前
# Flutter Provider 状态管理完全指南
前端
小雨青年33 分钟前
鸿蒙 HarmonyOS 6|ArkUI(01):从框架认知到项目骨架
前端
Null15535 分钟前
浏览器唤起本地桌面应用(基础版)
前端·浏览器
哈__39 分钟前
React Native 鸿蒙跨平台开发:PixelRatio 实现鸿蒙端图片的高清显示
javascript·react native·react.js
wszy18091 小时前
外部链接跳转:从 App 打开浏览器的正确姿势
java·javascript·react native·react.js·harmonyos