首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浏览器 DOM 元素的事件代理指的是什么

事件监听 我们可以在想要监听事件的 DOM 元素上通过 addEventListener[3] 注册监听器。...在使用 addEventListener 注册事件监听器时,可以通过传递第三个参数,指定此事件监听要在什么阶段触发: elem.addEventListener('click', eventHandler...库和框架中的事件处理 在 DOM 事件处理的这部分,jQuery 和 Vue 都将原生的事件监听器做了封装,方便我们快速设定、使用,甚至会自动帮你移除无用的事件监听。...但是在 React 中,React DOM 上直接注册事件监听器,其实监听的是 React 额外封装过的 React DOM Event,并将全部事件代理到 document 上,这与原生事件有很大不同...有兴趣深入研究的话可以在**React 源码**[5] 中查找关于事件处理的代码部分。

1K30

《现代Javascript高级教程》深入理解事件处理和传播机制

1.4 React与Virtual DOM 随着React等前端框架的出现,事件处理机制也发生了一些变化。React通过Virtual DOM的概念,将事件处理从直接操作DOM转移到组件层面进行管理。...React利用了合成事件( SyntheticEvent)来处理事件,实现了跨浏览器的一致性和性能优化。 在React中,事件处理程序是通过特定的语法和属性绑定到组件的,而不是直接操作DOM元素。...通过在目标元素上注册事件处理程序,可以捕获和处理用户触发的事件,实现交互功能。 例如,通过在按钮上注册click事件处理程序,可以 在按钮被点击时执行相应的代码逻辑。...通过在父元素上注册事件处理程序,可以利用事件冒泡机制,统一管理子元素的事件处理。 例如,可以在父元素上注册click事件处理程序,根据触发事件的具体子元素进行不同的操作。...它利用事件冒泡机制,在父元素上注册一个事件处理程序,处理多个子元素的相同事件。 例如,可以在父元素上注册click事件处理程序,根据触发事件的子元素的不同类别执行不同的操作。

20140
您找到你想要的搜索结果了吗?
是的
没有找到

React深入】React事件机制

React事件如何解决跨浏览器兼容 5.什么是合成事件 下面是阅读过源码后,将所有的执行流程总结出来的流程图,不会贴代码,如果你想阅读代码看看具体是如何实现的,可以根据流程图去源码里寻找。...事件注册 ? 组件装载 / 更新。 通过 lastProps、 nextProps判断是否新增、删除事件分别调用事件注册、卸载方法。...这里的事件执行利用了 React的批处理机制,在前一篇的【React深入】setState执行机制中已经分析过,这里不再多加分析。...由上面的流程我们可以理解: react的所有事件都挂载在 document中 当真实dom触发后冒泡到 document后才会对 react事件进行处理 所以原生的事件会先执行 然后执行 react合成事件...由上面的执行机制不难得出,所有的react事件都将无法被注册

1.2K40

React 17 RC 版发布:无新特性,却有新期待!

React 组件中,你通常在编写事件处理器会采用内联写法: 与其等价的原生 DOM 代码是这样的: myButton.addEventListener...如果页面上有多个 React 版本,它们都将在顶部注册事件处理器。...如果你不喜欢 React 了,想用 jQuery 重写你的应用,你可以从 shell 开始将其从 React 转换为 jQuery, 而不会影响事件冒泡。...在 React 16 及更早版本中,即使你在 React 事件处理器中调用了 e.stopPropagation() ,你自定义的 document 监听器仍然会收到事件,因为原生事件已经注册在 document...而使用 React 17, 冒泡将会停止,因此你的 document 处理器将不会触发: document.addEventListener('click', function() { // 在调用了

2.4K20

细说react源码中的合成事件_2023-02-14

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的相关参考视频讲解:进入学习事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

33330

react源码中的合成事件

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的相关参考视频讲解:进入学习事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

94840

细说react源码中的合成事件_2023-03-15

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的相关参考视频讲解:进入学习事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

38640

react源码中的合成事件

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的相关参考视频讲解:进入学习事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

67970

细说react源码中的合成事件

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的相关参考视频讲解:进入学习事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

70530

细说react源码中的合成事件

同时可以动态挂载元素无需作额外的事件监听处理。你看,事件委托那么牛 13,你觉得 React 会不用?...React注册事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)React...下面我们来一步一步的看它是怎么工作的事件注册React注册一个事件贼简单,就比如这样:class TaskEvent extends Reac.PureComponent { render() {...document 上 (这就是前边说的 React注册事件最终会绑定在document这个 DOM 上)事务方式调用 putListener 存储事件 (就是把 React 组件内的所有事件统一的存放到一个对象里..._rootNodeID;};事件分发既然事件已经委托注册到 document 上了,那么事件触发的时候,肯定需要一个事件分发的过程,流程也很简单,既然事件存储在 listenrBank 中,那么只需要找到对应的事件类型

58840

React 进阶 - 事件系统

比如: 给元素绑定的事件,不是真正的事件处理函数 在冒泡 / 捕获阶段绑定的事件,也不是在冒泡 / 捕获阶段执行的 在事件处理函数中拿到的事件源 e ,也不是真正的事件源 e React 为什么要写出一套自己的事件系统呢...preventDefault ,由于 React 事件源 e 也是独立组建的,所以 preventDefault 也是单独处理的 # 事件合成 React 事件系统组成 事件合成系统,初始化会注册不同的事件插件...对于不同的事件,有不同的处理逻辑;对应的事件源对象也有所不同,React事件事件源是自己合成的,所以对于不同事件需要不同的事件插件处理。...事件绑定,就是在 React 处理 props 时候,如果遇到事件比如 onClick ,就会通过 addEventListener 注册原生事件。...注册事件 } } 绑定在 document 的事件,是 React 统一的事件处理函数 dispatchEvent ,React 需要一个统一流程去代理事件逻辑,包括 React 批量更新等逻辑

1.1K10

React】354- 一文吃透 React 事件机制原理

当我大概的了解过react事件机制后,略微了解一些皮毛,觉得合成不单单是事件的合成和处理,从广义上来说还包括: 对原生事件的封装 对某些原生事件的升级和改造 不同浏览器事件兼容的处理 对原生事件的封装...浏览器事件的兼容处理 react在给document注册事件的时候也是对兼容性做了处理。 ? 上面这个代码就是给document注册事件,内部其实也是做了对 ie浏览器的兼容做了处理。...以上就是对于react合成这个名词的理解,其实react内部还处理了很多,只是简单的举了几个栗子,后面开始聊事件注册事件派发的机制。...事件注册 - 组件挂载阶段,根据组件内的声明的事件类型-onclick,onchange 等,给 document 上添加事件 -addEventListener,并指定统一的事件处理程序 dispatchEvent...完成事件注册 b. 将 react dom ,事件类型,处理函数 fn 放入数组存储 c.

98721

【长文慎入】一文吃透 react 事件机制原理

当我大概的了解过react事件机制后,略微了解一些皮毛,觉得合成不单单是事件的合成和处理,从广义上来说还包括: 对原生事件的封装 对某些原生事件的升级和改造 不同浏览器事件兼容的处理...浏览器事件的兼容处理 react在给document注册事件的时候也是对兼容性做了处理。 ? 上面这个代码就是给document注册事件,内部其实也是做了对 ie浏览器的兼容做了处理。...以上就是对于react合成这个名词的理解,其实react内部还处理了很多,只是简单的举了几个栗子,后面开始聊事件注册事件派发的机制。...事件注册 - 组件挂载阶段,根据组件内的声明的事件类型-onclick,onchange 等,给 document 上添加事件 -addEventListener,并指定统一的事件处理程序 dispatchEvent...完成事件注册 b. 将 react dom ,事件类型,处理函数 fn 放入数组存储 c.

4.2K91

深度分析React源码中的合成事件_2023-02-13

事件注册事件注册是自执行的,也就是React自身进行调用的:// 注册React事件registerSimpleEvents(); registerEvents$2();registerEvents...registerSimpleEvents这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener:// 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了:function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结:React事件系统分为几个部分:事件注册事件监听;事件合成;事件派发;事件系统流程:在React代码执行时,内部会自动执行事件注册;第一次渲染,创建fiberRoot时,会进行事件的监听

60260

深度分析React源码中的合成事件2

事件注册事件注册是自执行的,也就是React自身进行调用的:// 注册React事件registerSimpleEvents(); registerEvents$2();registerEvents...registerSimpleEvents这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener:// 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了:function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结:React事件系统分为几个部分:事件注册事件监听;事件合成;事件派发;事件系统流程:在React代码执行时,内部会自动执行事件注册;第一次渲染,创建fiberRoot时,会进行事件的监听

62640

深度分析React源码中的合成事件

;相关参考视频讲解:进入学习事件注册事件注册是自执行的,也就是React自身进行调用的:// 注册React事件registerSimpleEvents(); registerEvents$2();registerEvents...registerSimpleEvents这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener:// 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了:function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结:React事件系统分为几个部分:事件注册事件监听;事件合成;事件派发;事件系统流程:在React代码执行时,内部会自动执行事件注册;第一次渲染,创建fiberRoot时,会进行事件的监听

84610

深度分析React源码中的合成事件_2023-03-01

事件注册 事件注册是自执行的,也就是React自身进行调用的: // 注册React事件 registerSimpleEvents(); registerEvents$2(); registerEvents...registerSimpleEvents 这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener: // 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了: function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结: React事件系统分为几个部分: 事件注册事件监听; 事件合成; 事件派发; 事件系统流程: 在React代码执行时,内部会自动执行事件注册; 第一次渲染,创建fiberRoot时,

59330

分析React源码中的合成事件

事件注册事件注册是自执行的,也就是React自身进行调用的:// 注册React事件registerSimpleEvents(); registerEvents$2();registerEvents...registerSimpleEvents这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener:// 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了:function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结:React事件系统分为几个部分:事件注册事件监听;事件合成;事件派发;事件系统流程:在React代码执行时,内部会自动执行事件注册;第一次渲染,创建fiberRoot时,会进行事件的监听

67940

React源码中的合成事件

事件注册事件注册是自执行的,也就是React自身进行调用的:// 注册React事件registerSimpleEvents(); registerEvents$2();registerEvents...registerSimpleEvents这里会注册大部分事件,它们在React被定义为顶级事件。...该函数主要遍历上面事件注册添加到allNativeEvents的事件,按照一定规则,区分冒泡阶段,捕获阶段,区分有无副作用进行监听,监听的api还是addEventListener:// 监听冒泡阶段事件...在一系列判断通过后,就开始真正的事件处理了:function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent,...做下总结:React事件系统分为几个部分:事件注册事件监听;事件合成;事件派发;事件系统流程:在React代码执行时,内部会自动执行事件注册;第一次渲染,创建fiberRoot时,会进行事件的监听

66420
领券