0204refs详解-组件-React
创始人
2025-05-29 05:14:17
0

1 概述

组件内的标签通过定义ref属性来标识自己。

做一个小实例,如下图所示:

在这里插入图片描述

两个输入框,第一个输入框输入内容,点击后面按钮,弹窗显示输入内容;第二输入框,失去焦点弹窗显示输入内容。

这里我需要获取页面DOM input,进而获取输入框内容,下面我来看看在react怎么怎么做。

1 字符串形式refs

示例代码如下:


0801_字符串形式refs

字符串形式refs格式:

// refs 声明
<标签 ref="xxx" />
// refs 使用
this.refs.xxx

this.refs.xxx表示的不是虚拟DO M,而是虚拟DOM转化后的真实DOM。

2 回调形式refs

2.1 基本使用

上述字符串形式refs官网不建议使用,它存在一些问题,比如效率问题等,在后续更新中可能废弃。

react还提供一种回调形式的refs,以上面实例为例,使用回调形式ref,代码如下所示:


0802_回调形式refs

回调形式ref格式:

ref={结点参数 => {this.xxx=结点参数}} // 把传递的参数结点挂载在组件实例上

2.2 回调refs调用次数问题

官网说明:

If the ref callback is defined as an inline function, it will get called twice during updates, first with null and then again with the DOM element. This is because a new instance of the function is created with each render, so React needs to clear the old ref and set up the new one. You can avoid this by defining the ref callback as a bound method on the class, but note that it shouldn’t matter in most cases.

如果回调函数以内联函数定义,在更新的时候会被调用2次,第一次传递的结点为null,第二次才传递DOM元素。因为每次render都会创建新的函数实例,react需要清理旧的ref,设置新的ref。如果要使用回调形式ref,需要把ref回调定义在组件实例上。

示例代码如下:


0803_回调refs执行次数问题

3 API形式refs

AP I格式上目前React官方推荐的方式,通用格式:

Class xxx extends React.Component{xxx = React.createRef()return {<标签 ref={this.xxx} />}
}

还是以最开始实例为例,代码如下:


0801_字符串形式refs

说明:

  • APi创建的ref一一对应,即一个结点对应一个ref;如果多个元素使用相同的ref,最后一个覆盖前面的。

4 几种ref形式对比

  • 字符串形式ref,定义使用形式简单,方便;但是官网不建议使用,虽然使用大多数情况下并不会有什么影响。
  • 回调形式ref,定义和使用相对麻烦。
  • API方式ref,每个元素都需要新创建一个ref,官网建议方式。

后记

❓QQ:806797785

⭐️源代码仓库地址:https://gitee.com/gaogzhen/react-study

参考:

[1]尚硅谷React教程(2022加更,B站超火react教程)[CP/OL].2020-12-15.p27-p31.

相关内容

热门资讯

企业IP打造指南:小公司低成本... 小公司做企业IP,不是为了装门面,而是让客户在没见到你之前,就能通过内容知道你是谁、你解决什么问题、...
官方:赵心童入选世界斯诺克名人... 北京时间5月8日消息,世界斯诺克巡回赛(WST)今日正式公布了2025/26赛季年终奖项及名人堂更新...
小灰熊AI学员王锋:希望能跟上... 35了,老程序员了。 从进入互联网行业到现在,其实已经做了很多年移动端开发。最早那几年,安卓行业发展...
原创 2... 2026年全国两会把稳定房地产市场列为重点工作,政府工作报告明确提出因城施策控增量、去库存、优供给。...
一年翻倍,六年未归——徽商银行... 文:向善财经 今年的港股市场,与A股市场出现了明显的分化。 A股这边,科技板块在AI浪潮中热闹非凡;...
古井贡酒2025:在行业深度调... 以“稳”为底、以“新”为翼。 文/每日财报 杜康 在行业库存高企、价格倒挂的背景下,当多数酒企在为...
好上好8408万收购鼎瑞芯加码... 5月7日晚,好上好(001298.SZ)抛出一份收购公告,拟以8408万元现金收购深圳市鼎瑞芯科技有...
全面大撤离!李嘉诚英国“套现”... 突发,李嘉诚又卖了。 这次,套现了455亿。 金额不少,但更值得关注的是透露着不同寻常的信号。 因为...
油气价格上涨加剧法国一季度贸易... 据新华社,法国海关7日发布的数据显示,受中东局势推高国际油气价格影响,法国今年第一季度贸易逆差扩大至...
昆仑芯启动科创板IPO上市辅导... 5月8日,据证监会官网显示,昆仑芯(北京)科技股份有限公司于2026年5月7日正式启动科创板上市辅导...
贵州茅台酒股份有限公司关于回购... 来源:上海证券报 证券代码:600519 证券简称:贵州茅台 公告编号:临2026-016 贵州茅...
百度昆仑芯启动科创板上市辅导,... 5月8日,证监会官网显示,昆仑芯(北京)科技股份有限公司 (下称“昆仑芯”)于2026年5月7日正式...
滕州信华的承压时刻:罚单、失信... 2026年4月末,滕州信华美元债单日跌近2%,关联方被列“老赖”。半年前,这家AA+城投曾因非市场化...
002808,或被终止上市! 【导读】因触及财务类退市指标,*ST恒久或被终止上市 中国基金报记者 李智 又一A股或被终止上市。 ...
院士团队掌舵,溧阳这家企业已完... 近日,溧阳天目先导电池材料科技有限公司(下称“天目先导”)官宣完成B轮融资,投资方包括知卓创新资本、...
工商银行全新推出“工盈研选”品... 深圳商报·读创客户端记者 詹钰叶 近日,工商银行重磅推出「工盈研选」基金销售服务品牌,以客户盈利为核...
和讯信息胡云龙:逼空走势,周五... 今天市场出现逼空走势,场内投资者因持有筹码而尤为受益。五一前布局的投资者当前收获颇丰。然而,随着上证...
今晚,油价上调! 4月21日国内成品油价格下调以来,国际市场原油价格剧烈震荡,前期大幅上涨后近日有所回落,本次调价的前...
南方东英旗下两倍做多海力士,成... 【导读】南方东英旗下两倍做多海力士,成为全球最大的个股杠杆及反向产品 中国基金报记者 伊万 人工智能...
原创 金... 黄金,这东西从古至今就没离开过中国人的生活。从老辈人压箱底的小黄鱼,到如今年轻人结婚绕不开的“三金”...