作为一名合格的React前端,必知window.event与SyntheticEvent的区别

news2024/11/25 20:32:37

通过鼠标的滚动来实现图片的放大和缩小,没错,像我这样不思进取的小白,从来不会自己动手撸一遍。

主要的功能函数:

一开始还挺纳闷为什么没有传入event参数也可以在函数中访问到,想起曾经是要传入一个event/e的呀,后来百度了一下,事件event是window里的东西。

然后回到react项目中,首先是要获取到img的真实的dom元素,使用了ref。

获取到真实的DOM元素后,然后再将功能函数放上去就可以了;

嘿嘿,任务完成。拜拜!

其实,我应该可以早点下班回去的。

然后,想把这个再写一遍,放到自己的GitHub上。

就在下班之际,我create-react-app搭建了一个学习用的react。

然后开开心心的将代码从项目上复制过去,然后结果功能函数里报错了:

然后就开始一脸蒙蔽了,怎么会就找不到event了,明明使用的都是react框架呀,怎么就错了呢,因为项目我是接手的,所以我就猜想是不是装了什么插件,而我的react可是什么都没有呀,我的老天鹅。。。百思不得其姐。

报的错误是:Unexpected use of ‘event’ no-restricted-globals;

然后复制粘贴百度

结果这一堆东西,好像没有我想要的答案。

然后又回到了代码上,给它传了一个参数event:

我以为这样应该是可以了,确实没有报错了,但是滚动鼠标没有图片没有放大缩小。

问题继续。。。

然后我将两个的imgDom和event打印出来一看,发现了不同的地方:

失败的event是Class,成功的event是WheelEvent;

然后我再将失败的event.wheelDelta给打印出来是undefined

这就使我非常纳闷了,怎么会这样呢?

然后又是各种百度。。。结果搜不到,也可能是自己百度的功底还有待加强。

一看时间,靠,十点半了,撤。。不然广州的地铁就要休息了。

第二天下午我问了问隔壁的同事,他也和我一样一开始有点蒙蔽,谁叫我们都那么的白呢。

然后,我们俩就开始继续折腾这个问题。

他叫我点开Class和WheelEvent对比一下,看看有什么不同,确实它们的大部分属性都是相同的,然后继续点开_proto_,然后在Class到Object之间发现了 _proto_:SyntheticEvent;这个东西引起他的注意,于是他叫我百度了一下这个单词,然后进入了react的文档:合成事件(SyntheticEvent);感觉这篇文档就是答案的关键。然后耐下心来看完这篇文档,这个内容还是第一次看。确实文档中还有很多的东西没有看,自己也就看了主要概念,高级指南也只看了点点。

那么SyntheticEvent是什么呢?看看中文文档的概述:

然后通过event.antiveEvent就可以访问到Class中的WheelEvent,这样就可以使用滚轮事件了。不过说来也真实蠢,命名Class的log里type前面就有nativeEvent:WheelEvent;但是自己心瞎就是看不到。然后我将event改成了event.nativeEvent就成功了:

然后我不传入event了,直接使用window.event:

也成功了。

原来react的合成事件是将事件event合并到了它的事件了,直接访问是event是

不可以访问到window下的event事件。

但是有一点还是想不明白,那就是两个都是react写的,为什么一个可以,一个却不行?

后来看了两个react的版本号:

一个是16.4.0的:

一个是16.6.3的:

如果不是某些插件导致的,或许就是版本号的问题了。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

销售团队怎么管理?

销售团队怎么管理?这个问题真的很大,不同的销售团队管理方式也不相同。 但我们还是可以总结出一些常用的方法论: 不同销售结构的团队怎么管理不同发展阶段的销售团队如何管理团队管理的核心在于管人 内容略多,已经整理装订成册&…

22个最流行的三维重建软件【2022】

摄影测量是一种通过从照片创建 3D 模型来获取环境中真实世界对象的可靠数据的技术。从图像中提取 2D 和 3D 数据,并与对象、建筑物或地形的重叠照片一起转换为数字 3D 模型。 这允许捕捉大型物体,甚至是风景,否则无法扫描。 因此,…

C++之多态(上篇)(最全总结)

本篇目录前言1.多态的概念1.1概念2.多态的定义及实现2.1 虚函数2.2 虚函数的重写2.3 多态的构成条件3.一道经典题目4.多态的原理4.1虚函数表前言 需要声明的,这两篇文章(C之多态(上下篇))的运行环境都是在vs2013下的x…

Python数据可视化操作原理

后端是处理数据提取用户想要的数据。简单常用的是Python,相对于java,c, c,Python简直对初学者太友好,提供丰富多彩的API接口,比如常见的降维聚类算法:PCA, t-SNE, MDS, k-means等。如果用c实现过PCA算法有几…

MinGW下载和安装详细步骤 及 环境配置

一、下载 点击 这里 进入官网下载最新版本的MinGW。(这里下载的是Windows32位,但MinGW的所有软件都将在64位Windows平台上执行,所以32位和64位都是一样的。) 二、安装 1. 下载完成后,双击程序进行安装; …

[附源码]计算机毕业设计Python的连锁药店销售管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【数据结构】基础: 常见排序算法

【数据结构】基础:常见排序算法 摘要:本文将从排序的概念及其附属概念出发,再对排序算法进行分类,并对其思想与实现进行说明,最后对各个算法进行总结。 文章目录【数据结构】基础:常见排序算法一. 排序的概…

Debian11.5和Ubuntu22.04安装fcitx5中文输入法(五笔拼音)

1 说明 Debian和Ubuntu的DE(桌面环境)均为GNOME。 2 安装fcitx5和fcitx5-chinese-addons(Debian和Ubuntu通用) sudo apt install fcitx5 fcitx5-chinese-addons 3 Debian11.5设置fcitx5 Debian安装完fcitx5后,最好先重启!&am…

第十四届蓝桥杯集训——for——判断质数/素数

第十四届蓝桥杯集训——for——判断质数/素数 目录 第十四届蓝桥杯集训——for——判断质数/素数 1、什么是质数/素数? 2、整除代码的表达方式? 3、判断素数代码 4、素数的价值 5、素数分布规律 6、素数密度公式 判断素数是我们在做算法题目中出现…

零基础学习编程,哪一门语言比较适合入门

初学编程的人,几乎都会问这个问题吧,编程语言近年来备受关注的Java和Python,到底选择什么作为入门好呢?下面乐字节来为大家讲述下: 首先得明白你学习编程的目的是什么,如果是是为了学会编程后跳入互联网企…

[附源码]计算机毕业设计Node.js宠物店网站(程序+LW)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

可视化报表软件-FineReport绝对层次坐标

1.概念说明 在进行报表设计时,单元格尚未扩展,但是其它单元格的计算表达式可能需要此单元格扩展后某个数据的精确位置,这时就需要使用绝对层次坐标精确表达该数据的位置。 层次坐标概念图如下图所示: 注:反向获取第 …

热门技术中的应用:云计算中的网络-第25讲-软件定义网络:共享基础设施的小区物业管理办法

上一节我们说到,使用原生的VLAN和Linux网桥的方式来进行云平台的管理,但是这样在灵活性、隔离性方面都显得不足,而且整个网络缺少统一的视图、统一的管理。 可以这样比喻,云计算就像大家一起住公寓,要共享小区里面的基础设施,其中网络就相当于小区里面的电梯、楼道、路、…

圣诞节送给女友的圣诞树----专属于我们的浪漫

前言: 美酒一杯让人醉,温馨陪伴浪漫随;雪花片片惹人爱,烦恼忧伤全不见;字里行间藏真情,文短情深送心愿:圣诞佳节快来到,祝大家永远开心幸福! Hello大家好,我是Dream。 圣诞节马上到了,一些朋友问…

[附源码]计算机毕业设计Python的实验填报管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【Mysql】Sharding-JDBC实现读写分离、分库分表的原理分析

【Mysql】SpringBoot整合Sharding-JDBC实现读写分离、分库分表(一)介绍Sharding-JDBC(1)什么是Sharding-JDBC(2)Sharding-JDBC的源码是如何实现对JDBC增强的(3)Sharding-JDBC的分片原…

力扣804.唯一摩尔斯密码词(java语言 散列表法)

题目描述: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: ‘a’ 对应 “.-” , ‘b’ 对应 “-…” , ‘c’ 对应 “-.-.” ,以此类推。 为了方便&#…

全球石油行业资源储量丰富 但分布不均 供需量逐渐恢复增长

1、全球石油资源储量情况 (1)全球石油资源丰富,但分布不均匀 根据观研报告网发布的《2022年中国石油行业分析报告-行业全景评估与投资规划分析》显示,全球石油资源总量丰富,勘探开发潜力较大。根据数据显示&#xff0…

旺季大促白热化,如何做好谷歌广告投放

眼下已经到了旺季大促的白热化阶段了,那么在这个关键的时期,跨境卖家应该如何利用好广告投放呢? 想必大家都知道,谷歌是跨境卖家们最最常用的广告投放渠道,今天,华sir重点向大家介绍一下谷歌的智能购物广告…

[附源码]Python计算机毕业设计Django校园二手交易平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…