javascript - React 中的事件池是什么?

标签 javascript reactjs

The SyntheticEvent is pooled. This means that the SyntheticEvent object will be reused and all properties will be nullified after the event callback has been invoked. This is for performance reasons. As such, you cannot access the event in an asynchronous way.

引用:Event System in React

最佳答案

事件池 - React 使用 SyntheticEvent,它是 native 浏览器事件的包装器,因此它们在不同的浏览器中具有一致的属性。除非我们使用 nativeEvent 属性来获取底层浏览器事件,否则我们在任何 react-app 中拥有的事件处理程序实际上都是通过 SyntheticEvent 实例传递的。

包装 native 事件实例可能会导致性能问题,因为创建的每个合成事件包装器还需要在某个时候进行垃圾收集,这在 CPU 时间方面可能非常昂贵。

React 通过分配一个合成实例池 来处理这个问题。每当触发事件时,它都会从池中获取一个实例并填充其属性并重新使用它。当事件处理程序完成运行时,所有属性都将被取消,合成事件实例将被释放回池中。因此,提高了性能。

关于javascript - React 中的事件池是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114196/

相关文章:

javascript - jQuery 函数toggle() 在 WordPress 网站中不起作用

javascript - 我可以从 Web 应用程序打开 Windows 资源管理器窗口吗?

javascript - jQuery 仅替换 .first() 的一个实例

reactjs - 除一条特定路线外的所有路线的渲染组件

javascript - 通过 React 路由器重新加载相同路由后的 API 调用

javascript - 导入 React 与 React,{ 组件 }

javascript - 什么是 InstantSearchSDKJSBridgeClearHighlight?

javascript - 如何使用 angularjs 或 javascript 清除浏览器缓存?

Javascript ReactJs 将 JsCss 和 Component 放在外部文件中

html - 将 CSS 模块与 Bootstrap 相结合