在React js中,对于每个拖动事件,都有一个带有“ capture”前缀的对应事件
onDragEnter与onDragEnterCapture,onDragLeave与onDragLeaveCapture等。
谁能说出两者之间的区别以及何时使用它们,因为它们都响应了类似的事件

最佳答案

冒泡和捕获基本上是事件传播的两种方式。

冒泡:
当事件发生在元素上时,它首先在该元素上运行处理程序,然后在其父元素上运行,然后一直在其他祖先上运行。
假设我们有3个嵌套元素form> div> p,每个元素上都有一个处理程序:

单击内部<p>首先运行onclick:


在那个<p>上。
然后在外部<div>上。
然后在外部<form>上。
依此类推,直到文档对象。


捕获:事件首先被最外面的元素捕获并传播到内部元素:

因此,在同一示例中,当您单击外部元素<form>时,它将在以下位置运行:


在那个<form>
然后是内在的<div>
然后<p>


使用react时,要为捕获阶段注册事件处理程序,请将Capture附加到事件名称;例如,您可以使用onClickCapture来处理捕获阶段中的click事件,而不是使用onClick。

其他事件也是如此。

来源[1] [2]

关于javascript - React JS onDragCapture与onDrag,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59047091/

10-10 23:52