react进阶 React内置的DOM组件中的事件

React内置的DOM组件中的事件

  1. 给document注册事件
  2. 几乎所有的元素的事件处理,均在document的事件中处理
    1. 一些不冒泡的事件,是直接在元素上监听
    2. 一些document上面没有的事件,直接在元素上监听
  3. 在document的事件处理,React会根据虚拟DOM树的完成事件函数的调用
  4. React的事件参数,并非真实的DOM事件参数,是React合成的一个对象,该对象类似于真实DOM的事件参数
    1. stopPropagation,阻止事件在虚拟DOM树中冒泡
    2. nativeEvent,可以得到真实的DOM事件对象
    3. 为了提高执行效率,React使用事件对象池来处理事件对象

注意事项

  1. 如果给真实的DOM注册事件,阻止了事件冒泡,则会导致react的相应事件无法触发
  2. 如果给真实的DOM注册事件,事件会先于React事件运行
  3. 通过React的事件中阻止事件冒泡,无法阻止真实的DOM事件冒泡
  4. 可以通过nativeEvent.stopImmediatePropagation(),阻止document上剩余事件的执行
  5. 在事件处理程序中,不要异步的使用事件对象,如果一定要使用,需要调用persist函数