React 18:Ref(获取DOM对象)

news2025/2/5 21:58:44

ref介绍

React中所有的操作默认都是在React元素上进行,然后再通过虚拟DOM应用到真实页面上的。这样做的好处我们不在赘述。

虽然如此,在React中依然为我们提供了可以直接访问原生DOM对象的方式。ref就是干这个事的。

ref是reference的简写,换句话说就是用来获取真实DOM对象的引用。

虽然可以获取到DOM对象,但是轻易不要这么做,如果必须要获取,也尽量是读取而不要修改,如果必需要修改也要尽量减少修改的次数,总之能不用就不用。

ref基本使用

下边我们来看看,如何操作,还是以函数组件为例:
在这里插入图片描述

在这里插入图片描述

我们要获取元素的真实DOM对象,首先我们需要使用
useRef()
这个钩子函数获取一个对象,这个对象就是一个容器,React会自动将DOM对象传递到容器中。
代码const divRef = useRef()就是通过钩子函数在创建这个对象,并将其存储到变量中。

创建对象后,还需要在被获取引用的元素上添加一个ref属性,该属性的值就是刚刚我们所声明的变量,像是这样ref={divRef}这句话的意思就是将对象的引用赋值给变量divRef。这两个步骤缺一不可,都处理完了,就可以通过divRef来访问原生DOM对象了。

useRef()返回的是一个普通的JS对象,JS对象中有一个current属性,它指向的便是原生的DOM对象。

ref.current

上例中,如果想访问div的原生DOM对象,只需通过divRef.current即可访问,它可以调用DOM对象的各种方法和属性,但还是要再次强调:慎用!
在这里插入图片描述

在这里插入图片描述
尽量减少在React中操作原生的DOM对象,如果实在非得操作也尽量是那些不会对数据产生影响的操作,像是设置焦点、读取信息等。

useRef()所返回的对象就是一个普通的JS对象,所以上例中即使我们不使用钩子函数,仅仅创建一个形如{current:null}的对象也是可以的。
在这里插入图片描述

只是我们自己创建的对象组件每次渲染时都会重新创建一个新的对象,而通过useRef()创建的对象可以确保组件每次的重渲染获取到的都是相同的对象。

总结

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【排序】详细聊聊归并排序(含非递归)

目录 归并排序的基本思想: 递归算法: 递归算法的思路分析: 开辟数组的函数: 递归的函数: 非递归算法: 非递归的思路分析: 边界问题: 时间复杂度和空间复杂度分析&#xff1a…

重建农场2.0:实景三维数据中心一站式解决方案

面向实景三维中国建设,如何扩大产能,不断提升实景三维数据中心的重建算力水平?如何满足快速迭代的需求,不断提升数据中心的应变能力?如何做到“一机多能”,不断外延数据中心的硬件价值?在前不久…

jquery获取父/子iframe页面的URL

最近因为要演示,做个临时ifame框架页面,因此子页面要根据父页面url来指定跳转。下面为ifame页面: 1、获取子页面url: var currentpath = window.location.pathname; console.log(currentpath); 输出为:/JG/TJ_JILU.aspx 2、获取父页面url: let currentTopHref = wind…

IDEA 注释模版

类的主注释 /*** description TODO* author Gaoxueyong* date ${DATE} ${TIME}* version 1.0*/方法的注释 1、创建自己的分组 选择右侧Template Group并输入名称 2、创建自己的模版 选择自己创建的分组然后选择Live Template 然后在Template text框内写入 *** $description…

脑图谱的一致性问题

脑图谱的意义及一致性问题 我们如何定义大脑的解剖结构,并将这些结构与大脑的功能联系起来,可以限制或增强我们对行为和神经系统疾病的理解大量可用的脑图谱给研究健康群体和患病人群的可重复性和描述大脑不同区域参与各种疾病的荟萃分析带来了问题——…

全力推进企业数智赋能发展主线,低代码任重道远

信息化进程 纵观近半个世纪以来我国信息化的发展,经历了20世纪80年代以个人计算机普及应用为特征的数字化阶段(信息化1.0);20世纪90年代中期以互联网大规模商用为特征的网络化阶段(信息化2.0);…

毕业设计 基于java web的网上招标系统

文章目录前言一、项目设计1. 模块设计注册用户部分管理员部分2. 实现效果二、部分源码最后前言 今天学长向大家分享一个 毕业设计项目: 基于java web的网上招标系统 一、项目设计 1. 模块设计 注册用户部分 1:查看网站流程:查看与网站有关的流程信息…

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

近期流支付协议Zebec Protocol正在成为加密行业备受瞩目的Web3生态,其在此前与Visa合作推出可以使用加密货币进行支付的借记卡Zebec Card后,得到了Visa创始团队成员在技术、市场发展前景上的高度认可。与此同时,Zebec Protcocol也与尼泊尔财政…

【react-脚手架】

目录bug初始化脚手架react脚手架创建项目并启动脚手架文件介绍案例:hello react快捷键组件化编码流程脚手架配置代理方法前置说明常用的ajax请求库配置方法一:只能配置一个路径配置方法二:配置多个路径引入bootsrtrap消息订阅与发布&#xff…

YOLO系列目标检测算法——YOLOX

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

毕业设计 基于java web的企业财务管理系统设计与实现

文章目录前言一、项目设计1. 模块设计2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 java web 项目: 基于java web的企业财务管理系统设计与实现 适用于毕业设计、课程设计 一、项目设计 1. 模块设计 管理员的所有模块的功能分析: 部门信息管理…

2022年最火的8种编程语言~工作机会超多~

当今,我们已知的编程语言多达几百种,但是常被大家使用的只占少数,无论你是刚入行的新手还是一名成熟的开发者,了解编程语言的受欢迎程度都很有必要。 最近,国外网站DevJobsScanner公布了一项数据,他们在过…

[附源码]计算机毕业设计Node.js电子商城系统(程序+LW)

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

用大约 10 万字的内容对 Java 的核心知识点和常见的 1000 多道面试题,做了详细的介绍

每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己…

粗效过滤器安装技术参数

广州特耐苏净化设备有限公司详细介绍:粗效过滤器主要技术参数 粗效过滤器主要技术参数 粗效过滤器壳体材质:碳钢、不锈钢(304、304L、316、316L)、衬氟、塑料(PP、PVC等)。 粗效过滤器通常安装在泵、压缩机的入口或流量仪表前的管道上。 粗效过滤器安…

1978-2020年全国及31省市农业机械总动力(万千瓦)

1978-2020年全国及31省市农业机械总动力(万千瓦) 1、时间:1978-2020年 2、范围:31省 3、来源:各省NJ 农业统计NJ 4、缺失情况:无缺失 5、指标:农业机械总动力 6、指标解释: 农…

基于ssm jsp二手书交易系统源码和论文

随着信息技术的快速发展和网络技术的日益完善,人们越来越重视电子商务。校园 二手物品交易系统是校园电子商务的一个典型代表。二手市场从以前的路边旧货市场转 变到网络中,通过二手交易系统实现了二手交易。而校园二手物品交易系统带给学生省 时、省…

java调用groovy如何避免OOM

首先我们要清楚java执行groovy的逻辑,这里我们采用了GroovyClassLoader的方法,因为它能缓存编译结果,不用每次执行相同的脚本都需要重新编译,提升执行效率 GroovyCodeSource groovyCodeSource new GroovyCodeSource(context.get…

LeetCode HOT 100 —— 437. 路径总和 III

题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点…

WebSocket新一代推送技术及Java Web实现

WebSocket简介 很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点&#…