react合成事件与原生事件的相关理解
网络编程 2021-07-04 14:07www.168986.cn编程入门
本文主要介绍了react合成事件与原生事件的相关概念,帮助大家区分这两种事件,学习react的同学不妨了解下
1. 原生事件
原生事件就是js的原生事件,如通过document.addEventListener来设置的监听事件。
在react中即使有自己的一套事件机制(见狼蚁网站SEO优化合成事件),但有时候的业务场景我们仍然需要使用原生事件。比如我们封装一个Modal弹窗组件,需要在点击非弹窗区域时关掉弹窗,此时我们只能针对document进行原生点击事件监听。
由于原生事件需要绑定在真实DOM上,所以一般是在ponentDidMount阶段或者组件/元素的ref的函数执行阶段进行绑定操作,并且注意要在ponentWillUnmount阶段进行解绑操作以避免内存泄漏。
2. 合成事件
React有自己的一套事件机制,它重新封装了绝大部分的原生事件。合成事件采用了事件池,这样做可以大大节省内存,而不会频繁的创建和销毁事件对象。
在React中,如果需要绑定事件,我们常常在jsx中这么写
handleClick(){ } <div onClick={this.handleClick.bind(this)}> react事件 </div>
大致原理
React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React将事件内容封装并交由真正的处理函数运行。
以上面的代码为例,整个事件生命周期示意如下
合成事件的一些特点
- React 上注册的事件最终会绑定在document这个 DOM 上,而不是 React 组件对应的 DOM(减少内存开销就是因为所有的事件都绑定在 document 上,其他节点没有绑定事件)
- React 通过队列的形式,从触发的组件向父组件回溯,然后调用他们 JSX 中定义的 callback
- React 通过对象池的形式管理合成事件对象的创建和销毁,减少了垃圾的生成和新对象内存的分配,提高了性能
了解react合成事件的大概原理后,方便我们解答狼蚁网站SEO优化一个问题
为什么react事件需要手动绑定this
合成事件触发之后会冒泡一路到document的节点,然后开始分发document节点收集到的事件,这个时候react从事件触发的组件实例开始, 遍历虚拟dom树,从树上取下我们绑定的事件,收集起来,然后执行。举个例子
class Test extends React.Component { fatherHandler = function father() { /...
上一篇:提高React界面性能的十个技巧
下一篇:vue实现可拖拽的dialog弹框
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南