事件系统

React

React 的事件机制总结一句,就是事件代理。

事件代理是通过事件冒泡实现的。

当编译工具转换 JSX 为虚拟 DOM 时,会抽取里面的 onXXX 属性(<View onClick={this.clickFn} ></View>)。这时它就会将 onXXX 的值(一个回调函数)放在 listnerBank 对象中,并且找到这个虚拟 DOM 的根节点。

  • 如果这个虚拟 DOM 包含在一个组件中,那么根节点就是这个组件的真实 DOM。
  • 如果这个虚拟 DOM 不存在于任何组件中,那么根节点就是 document

QReact

QReact 的事件系统与 React 相比,有以下几个特点:

  • 支持 onXxxCapture 事件绑定
  • 支持 mouseenter/mouseleave/focus/blur/change 等在 IE 下不会冒泡的事件类型
  • 支持移动端上的 ontTouchTap 事件