React中ref的理解_react ref_逆袭的菜鸟X的博客-程序员秘密

技术标签: react.js  前端  我的前端  javascript  

(1)React的ref有3种用法:

  1. 字符串
    dom节点上使用,通过this.refs[refName]来引用真实的dom节点
<input ref="inputRef" /> //this.refs['inputRef']来访问
  1. 回调函数
    React 支持给任意组件添加特殊属性。ref 属性接受一个回调函数,它在组件被加载或卸载时会立即执行。
  • 当给 HTML 元素添加 ref 属性时,ref 回调接收了底层的 DOM 元素作为参数。
  • 当给组件添加 ref 属性时,ref 回调接收当前组件实例作为参数。
  • 当组件卸载的时候,会传入null
  • ref 回调会在componentDidMount 或 componentDidUpdate 这些生命周期回调之前执行。
<input ref={(input) => {this.textInput = input;}} type="text" />   //HTML 元素添加 ref 属性时
<CustomInput ref={(input) => {this.textInput = input;}} />   //组件添加 ref 属性
  1. React.createRef()
    在React 16.3版本后,使用此方法来创建ref。将其赋值给一个变量,通过ref挂载在dom节点或组件上,该ref的current属性
    将能拿到dom节点或组件的实例
<
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36445197/article/details/104058549

智能推荐

Java并发编程实战~笔记~章四_师程工avaj的博客-程序员秘密

4.2 实例封闭如果某个对象不是线程安全的,可以通过多种技术使其在多线程程序中安全地使用。比如线程封闭,或者通过一个锁来保护对该对象的所有访问。实例封闭,就是把一个对象封装到另一个对象里面去,能够访问被封装对象的所有代码路径都是已知的,只要在这些路径上面设置合适的同步策略,就能确保以线程安全的方式来使用非线程安全的对象。比如这个例子:public class PersonSet {

mysql连接Java报java.sql.SQLException: The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represe_香风智乃哈~的博客-程序员秘密

mysql连接java报java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc t

分类算法————sklearn转换器和估计器_怎么将一个模型转换为sklearn学习器_荷泽泽的博客-程序员秘密

目录3.2.1 转换器-特征工程的父类3.2.2 估计器(sklearn机器学习算法的实现)1 转换器-特征工程的父类把特征工程的接口称之为转换器 fit_transform() 两个函数的封装 fit 做计算 transform 进行最终的转换2 估计器(sklearn机器学习算法的实现)1、用于分类的估计器: sklearn.neighbors k-近邻算法 sklearn.naive_bayes 贝叶斯 s...

mysql5建函数报1064错误,在mysql中创建函数不起作用-错误1064_yuhang555的博客-程序员秘密

mysql&gt; DELIMITER |mysql&gt;CREATE FUNCTION WEIGHTED_AVERAGE (n1 INT, n2 INT, n3 INT, n4 INT)RETURNS INTDETERMINISTICBEGINDECLARE avg INT;SET avg = (n1+n2+n3*2+n4*4)/8;RETURN avg;END|This workedDELI...

二维码生成及读取_爬行码毅的博客-程序员秘密

一. maven依赖&lt;dependency&gt; &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;core&lt;/artifactId&gt; &lt;version&gt;3.1.0&lt;/version&gt;&lt;/dependency&gt;&lt;depen...

使计算机热机重启的键应该是,电脑正常启动后在重启就不能启动了断电在开又..._knightshady的博客-程序员秘密

公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。话题:电脑正常启动后在重启就不能启动了断电在开又可以了问题详情:电脑正常启动后在重启就不能启动了断电在开又可以了,还有就是回答:可能是你盘的问题 你没有换一吗 断电的问题 应该是电源的问题 同时你也可以找一些朋友帮你看下 还有就是的有这方面的检测 咱们群里的朋友们: .ddy. secure1参考回答:有可能内存条松动 你把内存条拔下...

随便推点

laravel5.8 反序列化漏洞复现_bfengj的博客-程序员秘密

前言上一篇文章复现了一下laravel5.7的反序列化,这篇复现一下5.8的反序列化。还是github上下载源码:laravel5.8往composer.json的require里面加上"symfony/symfony": “4.*”,然后composer update。如果提示 Allowed memory size of bytes exhausted,参考这篇文章:运行 composer update,提示 Allowed memory size of bytes exhausted然后还

前端_引入背景图,nowarp_AmazingZ-sys的博客-程序员秘密

移动端布局步骤:视口:视觉视口布局视口理想视口rem布局实现适配​ root em-----rem html字体的倍率​ em 当前字体的倍率修改视口&amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&amp;gt;引入rem.js&amp;lt;script src=&quot;&quot;&amp;gt;&amp;lt;/scri...

配置环境变量(JDK)_慢慢进步的java小白的博客-程序员秘密

一 .下载安装JDK1.下载JDK 可以去Oracle官网下载一个符合自己电脑位数(32/64)的JDK 版本 [下载地址](https://pan.baidu.com/s/1mgOPzc1xxZT58MYRac_9ZA)2. 安装JDK 直接点下一步 下一步二.配置环境变量1.点击此电脑或计算机 右键 属性 --》高级系统设置–》环境变量2.新建-&gt;变量名...

Ubuntu解决系统图标变大以及分辨率降低问题(ubuntu18.04)_ubuntu系统图标很大_苏三福的博客-程序员秘密

星期一来上班一打开电脑发现Ubuntu系统显示变形了,之前就遇到过这个问题但是一直没有解决好。今天解决了顺便记录下,也方便分享给大家:开机引导文件: /etc/default/grub1/修改开机引导文件:sudo gedit /etc/default/grub2/找到文件中的GRUB_GFXMODE,并将其改为GRUB_GFXMODE=1920x1080(你想要的分辨率),并去掉GRUB_...