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

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

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

1.一致性

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

2.事件池化

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

3.统一的接口

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

区别:

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

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

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

相关推荐
Spider_Man22 分钟前
打造属于你的前端沙盒 🎉
前端·typescript·github
用户479492835691524 分钟前
🤫 你不知道的 JavaScript:`"👦🏻".length` 竟然不是 1?
前端·javascript·面试
掘金一周26 分钟前
凌晨零点,一个TODO,差点把我们整个部门抬走 | 掘金一周 9.11
前端·人工智能·后端
用户81744134274828 分钟前
kubernetes核心概念 Service
前端
xingkongv29 分钟前
从“调接口仔”到“业务合伙人”:前端的 DDD 初体验
javascript·前端框架
东北南西37 分钟前
Web Worker 从原理到实战 —— 把耗时工作搬到后台线程,避免页面卡顿
前端·javascript
Zz_waiting.38 分钟前
案例开发 - 日程管理 - 第六期
前端·javascript·vue.js·路由·router
A 风38 分钟前
封装日期选择器组件,带有上周,下周按钮
开发语言·javascript·vue.js
袁煦丞1 小时前
企业微信开发者的‘跨网穿梭门’:cpolar内网穿透实验室第499个成功挑战
前端·程序员·远程工作
Simon_He1 小时前
vue-markdown-renderer:比 vercel streamdown 更低 CPU、更多节点支持、真正的流式渲染体验
前端·vue.js·markdown