React中的合成事件解释和理解
什么是合成事件(Synthetic event)?它和原生事件有什么区别?
解题思路:解释合成事件,然后对比原生事件,然后再说他的优势
1.一致性
在 react里面,这个合成事件是非常重要的,因为它就是为了解决浏览器之间与事件模型的一些差异,像一些不同的浏览器,对事件的绑定与解绑机制都是会有区别的,如果说react不去抽象这样一层,到了别的平台他去实现事件的响应和处理都会出现问题的,于是他在原生事件和我们编写的代码中间给他来了一层中间层,这一层也就是合成事件,说白了就是避免浏览器差异引起的问题,为了保持一致性
2.事件池化
react在合成事件对象的实现中采用了事件池化策略,这意味着当事件处理完之后,react会将事件对象重新放回到池中,而不是保留每个事件的实例,从而减少消耗内存,事件池化的实现意味着事件对象只能在回调函数中访问,而回调执行后,属性会被清空
3.统一的接口
合成事件封装了标准的原生事件接口,并提供了一致的API来访问事件的属性,如event.target,event.preventDefault()和event.stopPrepageation();
区别:
1.浏览器的兼容性,合成事件更好,因为原生的事件对于各种浏览器处理,订阅机制不一样.
2.react的合成事件会通过事件池的来优化订阅的函数 ,比如useMemo,useCallBack这些函数都可以去缓存函数,和事件池一样的机制
3.在性能优化方面,原生事件每次都会创建一个事件对象,对性能影响非常大,但合成事件,它是通过事件池来解决的,从而减少了内存的消耗