javascript - React 冒泡的事件传播乱序

标签 javascript html reactjs dom dom-events

给定以下代码,我希望在单击数字 3 时打印输出 3, 2, 1。实际打印输出为 1, 3, 2

这是什么原因?

document.body.onclick = () => {
  console.log('1')
}

function Test() {
  return (
    <div onClick={() => console.log('2')}>
      2
      <div onClick={() => console.log('3')}>
        3
      </div>
    </div>
  )
}

ReactDOM.render(<Test/>, document.querySelector("#root"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<body>
1
<div id="root" />
</body>

最佳答案

任何 native 事件处理程序都将在 React 事件处理程序之前触发。

这就是 React 处理事件的方式:

  1. 它在顶层监听事件并将它们转换为综合事件
  2. 将它们放入池中以维持秩序
  3. 调度 React 组件

正因为如此,React 生态系统中的秩序得以维持,但相对于其他生态系统而言是乱序的。

如本视频中所述:https://www.youtube.com/watch?v=dRo_egw7tBc

并在文档中含糊地描述:https://facebook.github.io/react/docs/events.html#event-pooling

关于javascript - React 冒泡的事件传播乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212840/

相关文章:

表中的 CSS 问题

javascript - 如何在 React 应用程序中正确测试 history.replace 和 history.push?

javascript - 阻止 jQuery 单击后函数继续执行

html - 如何更改滚动 ionic 内容的颜色?

html - 在标题中水平对齐 Logo 和导航菜单

reactjs - Onclick 事件目标气泡为子对象?

javascript - React Native - 使用异步数据填充 ListView

javascript - JQuery UI 排序破坏元素 Href 链接

javascript - 滑动切换时添加当前类

javascript - 未捕获的类型错误 : Cannot read property 'name' of undefined at XMLHttpRequest. xmlhttp.onload