简述原生事件和React事件的区别 ?

原生事件和 React 事件在几个方面有所区别:

  1. 事件注册的方式:原生事件是直接绑定在 DOM 元素上的,如 element.addEventListener('click', handleClick);而 React 事件则是通过特殊的 JSX 属性语法绑定的,如 <div onClick={handleClick}>Click me</div>
  2. 事件对象:原生事件处理函数接收的是原生的 Event 对象,这个对象的属性和方法取决于浏览器的实现;而 React 事件处理函数接收的是封装后的 SyntheticEvent 对象,这个对象的接口和原生的 Event 对象相同,但已经被规范化,以消除了各个浏览器之间的差异。
  3. 事件冒泡和捕获:原生事件和 React 事件都支持事件冒泡,但 React 事件不支持事件捕获。也就是说,如果你在 React 中使用 onClickCapture,React 会在控制台中输出警告,告诉你这个属性无效。
  4. 事件委托:原生事件默认不使用事件委托,也就是说,我们需要为每一个元素和每一个事件类型单独注册事件处理函数。但 React 事件则默认使用事件委托,所有的事件处理函数都被注册到了文档的根元素上。这样做的好处是减少了内存占用,并且可以自动处理组件的挂载和卸载。
  5. 性能:由于 React 事件的事件委托和事件对象的重用,React 事件系统的性能通常比原生事件更好。

发表评论

后才能评论