React18 React中的REF的使用

news/2025/3/12 18:54:49/文章来源:https://www.cnblogs.com/jocelyn11/p/18765626

想要获取元素操作DOM,React中该怎么做呢?~
首先肯定是要在DidMount周期函数中调用啦需要真实dom为前提嘛
1. 和VUE一样,可以使用this.$refs.xxx,结合元素中放置ref属性 【其实不推荐这样~】

2.可以使用document.querySelector('xx')获取
3.把ref属性值设置为一个函数的形式获取【推荐使用】

render() {let { title } = this.props,console.log("render:执行渲染");return (<><h2 className="title" ref={x=>this.title=x}>{title}</h2></>);}shouldComponentUpdate() {console.log("shouldComponentUpdate:是否允许更新");return true;}


4.基于React.createRef()方法创建一个REF对象
this.xxx = React.createRef(); //=>this.xxx={current:null}
ref={REF对象(this.xxx)}
获取方式:this.xxx.current;

class ClassFun2 extends React.Component {titleBox = React.createRef()render() {console.log("render:执行渲染");return (<><h2 ref={this.titleBox}>哈哈哈</h2></>);}componentDidMount() {console.log("componentDidMount:第一次渲染完毕");console.log(this.titleBox,'this.titleBox')   //{current:h2}
}export default ClassFun2;

原理
在render渲染的时候,会获取virtualDOM的ref属性
1)如果属性值是一个字符串,则会给this.refs增加这样的一个成员,成员值就是当前的DOM元素
2)如果属性值是一个函数,则会把函数执行,把当前DOM元素传递给这个函数【x-->DOM元素】,而在函数执行的内部,我们一般都会把DOM元素直接挂载到实例的某个属性上
3) 如果属性值是一个REF对象,则会把DOM元素赋值给对象的current属性
给一个类组件设置ref,可以获取当前组件的实例,也可以根据实例获取子组件的相关信息;
给一个函数组件设置ref,则会报错,但是可以通过React.forwardRef实现ref的转发,可以获取函数组件内部的某个元素

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3ds Max 2025下载与安装教程

Autodesk 3ds Max 是专业的三维建模、渲染和动画软件,可助您创建广阔的世界和优质的设计。使用强大的建模工具为环境和景观注入活力。 使用直观的纹理和明暗处理工具创建精细的设计和道具。 迭代和生成具有全方位艺术控制的专业级渲染‌3Dmax 2025的安装要求:‌操作系统‌:3…

Java多线程(一)---- 创建与使用

JUC Java多线程是一个非常复杂的知识点,今天这篇我们就来说说Java多线程的多种实现方式吧。 Thread 构造 Thread类可以说是非常基础的一个类了,通过继承Thread类,我们可以成功的创建一个“线程类”。 public class threadDemo {public static class threadDemo extends Thre…

Office 2024软件下载与安装教程

安装系统要求: 以下操作系统支持 Office LTSC 2024:Windows 11* Windows 10 Windows 10 LTSC 2021 Windows 10 LTSC 2019 Windows Server 2022设备至少需要一个 1.1 GHz、双核处理器、4 GB RAM、4 GB 可用磁盘空间,以及分辨率为 1280 x 768 的显示器才能运行 Office LTSC 20…

Visio 2024软件下载与安装教程

Microsoft Visio 2024专业版是一款专业的专业矢量绘图软件。Visio 2024不但新增了许多功能,而且还优化了众多性能,比如用户界面优化、更多图形元素库、允许用户邀请其他人一起编辑和查看图表、过程自动化等等,其一系列的改动旨在给予用户们最直观、最便利的操作体验! 操作系…

PhpStorm 2024 软件下载与入门级安装教程

高效智能的 PHP IDE 支持主流框架 PhpStorm完美支持Symfony、Drupal、WordPress、Zend Framework、Laravel、Magento、 Joomla!、CakePHP、Yii ...等各种主流框架。 全能的PHP工具 内建编辑器实际“了解”您的代码并且深刻理解其结构,支持所有PHP语言功能, 在开发现代技术和维…

在华为开发者空间:体验用仓颉基于DeepSeek开发智能聊天机器人

在华为云开发者空间体验YOLOV3。本文分享自华为云社区《华为开发者空间:基于仓颉编程语言和DeepSeek开发智能聊天机器人》,作者:开发者空间小蜜蜂。 华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、…

Typora 1.9.4软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【069】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程(建议关闭杀毒软件和系统防护)双击安装,弹窗安装对话框Install for all users,使用推荐选项选择安装位置,建议选择C盘之外安装默认勾选创建桌面快捷方…

说的都队

**观点认同与尊重:队名传递出对团队成员每一个观点的高度认可。表明团队内部成员彼此尊重,无论谁发表见解,都能得到重视,大家相信每个想法都有其价值与可取之处,有助于营造开放包容的讨论氛围,激发成员踊跃表达,促进思维碰撞。 决策高效统一:意味着团队在做决策时,能迅…

实战指南:智慧水厂管理平台搭建全流程解析(一)

当前水务管理面临成本攀升、设备运维低效、人力短缺等挑战,叠加水质标准升级与公众需求提升的诉求,传统管理模式难以为继。智慧水务平台通过全流程自控、数据驱动决策及标准化体系,成为破局关键。水厂管理正从粗放经验驱动转向数据智能驱动,通过“工艺-设备-人力-服务”全链…

色彩空间(Color Space)

我们为何需要色彩空间? 一方面,光来自太阳或其他辐射源,被介质(水、大气、玻璃)折射,并被表面漫反射或镜面反射。另一方面,在这个世界上,颜色并不像光那样以有形的方式存在。 颜色是我们感知周围世界的一部分。光线进入眼睛,被光感受器(视锥和视杆)处理,然后通过视…

IPD-货架技术和CBB

IPD-货架技术和CBB 发布于 2022-04-24 作者简介: 李晋老师,在多家电信设备厂商(NEC,华为,展讯,惠普)从事过研发以及质量管理工作,在研发管理、质量管理、项目管理和团队建设等方面经验丰富,在研发流程体系和质量管理体系方面有丰富的从业经历,沟通能力强,有协作精神…

20241917 2024-2025-2《网络攻防实践》第2次作业

------------恢复内容开始------------ ------------恢复内容开始------------ 1.实验内容1实验要求(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家…