React 事件函数传播及捕获

事件传播

事件处理函数将捕获任何来自子组件的事件。事件会沿着树向上“冒泡”或“传播”:它从事件发生的地方开始,然后沿着树向上传播。
在 React 中所有事件都会传播,除了 onScroll,它仅适用于你附加到的 JSX 标签。

   <div className="Toolbar" onClick={() => {
     alert('你点击了 toolbar !');
   }}>
     <button onClick={() => alert('正在播放!')}>
       播放电影
     </button>
   </div>
   // 点击播放电影,先弹框 '正在播放!',然后弹框'你点击了 toolbar !'
  • 阻止事件传播
    e.stopPropagation()
  • 捕获子元素上的所有事件,即便它们阻止了传播,可以通过在事件名称末尾添加 Capture 来实现这一点
   <div onClickCapture={() => { /* 这会首先执行 */ }}>
     <button onClick={e => e.stopPropagation()} />
     <button onClick={e => e.stopPropagation()} />
   </div>

每个事件分三个阶段传播:

  1. 它向下传播,调用所有的 onClickCapture 处理函数。
  2. 它执行被点击元素的 onClick 处理函数。
  3. 它向上传播,调用所有的 onClick 处理函数。

阻止默认行为

e.preventDefault()

e.stopPropagation() 阻止触发绑定在外层标签上的事件处理函数。
e.preventDefault() 阻止少数事件的默认浏览器行为。

相关推荐

  1. React 事件函数传播捕获

    2024-06-13 23:32:01       27 阅读
  2. Qt事件处理机制2-事件函数传播

    2024-06-13 23:32:01       34 阅读
  3. WPF 键盘事件捕获

    2024-06-13 23:32:01       54 阅读
  4. 事件冒泡、事件捕获事件委托

    2024-06-13 23:32:01       39 阅读
  5. js 事件模型 事件捕获事件冒泡

    2024-06-13 23:32:01       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 23:32:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 23:32:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 23:32:01       87 阅读
  4. Python语言-面向对象

    2024-06-13 23:32:01       96 阅读

热门阅读

  1. devops自动化运维平台的核心原则有哪些?

    2024-06-13 23:32:01       35 阅读
  2. C++学习步骤

    2024-06-13 23:32:01       52 阅读
  3. hadoop-cos

    2024-06-13 23:32:01       33 阅读
  4. 软件测试--第十一章 设计和维护测试用例

    2024-06-13 23:32:01       34 阅读
  5. CMake“cmake is not able to compile a simple test program”

    2024-06-13 23:32:01       34 阅读
  6. c++防止头文件重复

    2024-06-13 23:32:01       28 阅读