Skip to content

React 的事件代理机制和原生事件绑定有什么区别?

参考答案:

  • 事件传播与阻止事件的传播: React 的合成事件并没有实现事件捕获 只支持了事件冒泡。阻止事件传播 React 做了兼容性处理,只需要 e.preventDefault() 即可,原生存在兼容性问题。
  • 事件类型:React 是 原生事件类型 的一个子集(React 只是实现了 DOM level3 的事件接口,有些事件 React 并没有实现,比如 window 的 resize 事件。)阻止 React 事件冒泡的行为只能用于 React 合成事件系统,但是 在原生事件中的阻止冒泡行为,却可以阻止 React 合成事件的传播。
  • 事件的绑定方式:原生事件系统中支持多种不同的绑定事件的方式,React 中只有一种
  • 事件对象:原生中存在 IE 的兼容性问题,React 做了兼容处理。

题目要点:

  • React 的事件代理机制

    • 使用事件代理到根节点,减少事件监听器数量。
    • 提供合成事件,确保跨浏览器的一致性。
    • 通过事件池优化性能。
  • 原生事件绑定

    • 直接在 DOM 元素上绑定事件监听器。
    • 可能导致大量事件监听器,影响性能。
    • 原生事件对象可能存在浏览器兼容性问题。

React 的事件代理机制通过集中处理事件和提供一致的事件 API 来简化事件管理和提高性能,而原生事件绑定则直接操作 DOM 元素,适用于较简单或特定的场景。