【react全家桶学习】react组件中的ref属性(详)

news/2024/7/15 18:59:17 标签: react.js, react组件中的ref属性

不管在Vue中还是React,如果我们想使用一个元素的DOM,不需要通过JS中操纵DOM的方法,它们提供了一个专属的API就是ref。

而Vue中的ref可能比较简单(直接this.$refs.xxx就可以),这一篇主要讲一下如何在React中使用ref。

定义:

ref是reference的简写,它是一个引用,在react中,我们使用ref来操作DOM。

使用:

【refs的字符串形式】已经被弃用

了解就行了。

虽然点击按钮可以打印input1,但控制台会报错。提示报错信息,翻译为: 

在一个严格模式树中找到了一个字符串ref“input1”。字符串引用是潜在错误的来源,应该避免。我们建议使用useRef()  或createRef()

【回调ref】

 简写形式:

<input ref={c => this.input1 = c } type="text" placeholder="点击按钮提示数据" />

这样就不会报错了 

 补充:回调ref中回调执行次数问题---了解就行,不需要解决

【官方回答】如果 ref 回调函数是以内联函数的方式定义的,在更新过程中它会被执行两次第一次传入参数 null,然后第二次会传入参数 DOM 元素。这是因为在每次染时会创建一个新的函数实例,所以 React 清空旧的 ref 并且设置新的。通过将 ref 的回调函数定义成class 的绑定函数的方式可以避免上述问题,但是大多数情况下它是无关紧要的。

【createRef的使用】

React.createRef调用后可以返回一个容器,该容器可以存储被ref所标识的节点。

createRef 是 **React v16.3 ** 新增的API,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。

Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。

Refs 通常在 React 组件的构造函数中定义,或者作为函数组件顶层的变量定义,然后附加到 render() 函数中的元素


http://www.niftyadmin.cn/n/287764.html

相关文章

二叉树或者多叉树直径问题

原题链接&#xff1a;543. 二叉树的直径 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给定一棵二叉树&#xff0c;你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 什么是任意两点路径…

AT24C02芯片介绍

AT24C02管脚介绍 AT24C02低功耗CMOS串行EEPROM&#xff0c;它是内含2568位存储空间&#xff0c;具有工作电压宽&#xff08;2.5&#xff5e;5.5V&#xff09;、擦写次数多&#xff08;大于10000次&#xff09;、写入速度快&#xff08;小于10ms&#xff09;等特点。 AT24C02的1…

人才引进都选什么大学,哪些世界大学排名更靠谱?

最近几年&#xff0c;全国各地都在加大力度引进人才。上海市2020年首先推出留学生落户政策&#xff0c;毕业于世界排名前50名大学的留学生可直接申办落户&#xff0c;毕业于51-100名大学的&#xff0c;缴纳社保满6个月后可申办落户。 国家人事部门也确定了留学生“国家引进人才…

一文吃透Tomcat核心知识点

架构 首先&#xff0c;看一下整个架构图。最全面的Java面试网站 接下来简单解释一下。 Server&#xff1a;服务器。Tomcat 就是一个 Server 服务器。 Service&#xff1a;在服务器中可以有多个 Service&#xff0c;只不过在我们常用的这套 Catalina 容器的Tomcat 中只包含一…

常见upload格式

文件类型 MIME TYPE .3gp video/3gpp .apk application/vnd.android.package-archive .asf video/x-ms-asf .avi video/x-msvideo .bin application/octet-stream .bmp image/bmp .c text/plain .class application/octet-stream .co…

GBASE荣获2023数字中国创新大赛·信创赛道华北赛区一等奖

日前&#xff0c;2023数字中国创新大赛信创赛道华北赛区区域赛圆满结束。经过激烈角逐&#xff0c;GBASE参赛作品「多模多态企业级分布式数据库」GBase 8c荣获华北赛区一等奖&#xff0c;将被选送到全国总决赛&#xff0c;参与最后的冠军角逐。 数字中国创新大赛信创赛道是我国…

文献阅读(50)—— Transformer 用于肺癌诊断预测

文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测 文章目录 文献阅读&#xff08;50&#xff09;—— Transformer 用于肺癌诊断预测先验知识/知识拓展文章结构背景文章方法1. 文章核心网络结构2. Time Encoding ViT &#xff08;TeViT&#xff09;3. Tim…

【测试面试】软件测试技术面试,知己知彼百战百胜-成为offer收割机...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试面试题&am…