refs是什么?

  • React 中的 Refs提供了一种方式,允许我们访问 DOM节点或在 render方法中创建的 React元素
  • 本质为ReactDOM.render()返回的组件实例,如果是渲染组件则返回的是组件实例,如果渲染dom则返回的是具体的dom节点

使用方法

  • 创建Refs

    • 使用 React.createRef() 创建ref,并通过 ref 属性附加到 React 元素。
class MyComponent extends React.Component {constructor(props) {super(props);this.myRef = React.createRef();}render() {return <div ref={this.myRef} />;}
}
  • 访问Refs

    • 当 ref 被传递给 render 中的元素时,对该节点的引用可以在 ref 的 current 属性中被访问。
const node = this.myRef.current;

回调refs

不同于传递 createRef() 创建的 ref 属性,你会传递一个函数。这个函数中接受 React 组件实例或 HTML DOM 元素作为参数,以使它们能在其他地方被存储和访问。

官网例子:点击时自动获取输入框焦点

React 将在组件挂载时,会调用 ref 回调函数并传入 DOM 元素,当卸载时调用它并传入 null。在 componentDidMount 或 componentDidUpdate 触发前,React 会保证 refs 一定是最新的。

class CustomTextInput extends React.Component {constructor(props) {super(props);this.textInput = null;this.setTextInputRef = element => {this.textInput = element;};this.focusTextInput = () => {// 使用原生 DOM API 使 text 输入框获得焦点if (this.textInput) this.textInput.focus();};}componentDidMount() {// 组件挂载后,让文本框自动获得焦点this.focusTextInput();}render() {// 使用 `ref` 的回调函数将 text 输入框 DOM 节点的引用存储到 React// 实例上(比如 this.textInput)return (<div><inputtype="text"ref={this.setTextInputRef}/><inputtype="button"value="Focus the text input"onClick={this.focusTextInput}/></div>);}
}

适用场景

  • 对Dom元素的焦点控制、内容选择、控制
  • 对Dom元素的内容设置及媒体播放
  • 对Dom元素的操作和对组件实例的操作
  • 集成第三方 DOM 库

React中的refs是用来做什么的?相关推荐

  1. React 中的 refs

    Refs Refs是什么 Refs 提供一种访问在render方法中DOM节点或者React元素的方式. Refs作用 你可以通过它获得DOM节点或者React元素.一般用在处理焦点,文本选择,触发动 ...

  2. React属性之Refs

    React属性之Refs 1 介绍 2 使用方法 2.1 createRef(版本>=React16.3) 2.2 回调Refs 2.3 String类型的Refs(已过时,不推荐使用) 2.4 ...

  3. React中refs的理解

    React中refs的理解 Refs提供了一种方式,允许我们访问DOM节点或在render方法中创建的React元素. 描述 在典型的React数据流中,props是父组件与子组件交互的唯一方式,要修 ...

  4. [react] react中可以在render访问refs吗?为什么?

    [react] react中可以在render访问refs吗?为什么? <><span id="name" ref={this.spanRef}>{this ...

  5. [react] 在React中我们怎么做静态类型检测?都有哪些方法可以做到?

    [react] 在React中我们怎么做静态类型检测?都有哪些方法可以做到? flow 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...

  6. React中的PureComponent,refs

    文章目录 PureComponent refs vue中的ref react中父组件给子组件传值 子组件给父组件传值 react中的逐层传递 PureComponent 如果父组件的属性和状态发生改变 ...

  7. react中context到底是如何传递的-源码分析

    react中使用context 基本要求就是 父组件中声明Parent.prototype.getChildContext 父组件中声明Parent.childContextType 子组件声明 Ch ...

  8. echarts setoption方法_在Vue和React中使用ECharts的多种方法

    前言 俗话说:"工欲善其事,必先利其器".现如今已经有许多成熟易用的可视化解决方案,例如ECharts,AntV等等.我们可以把这些解决方案比作是一套套成熟的"工具&qu ...

  9. 如何在React中做到jQuery-free

    前言 前些天在订阅的公众号中看到了以前阮一峰老师写过的一篇文章,「如何做到 jQuery-free?」.这篇文章讨论的问题,在今天来看仍不过时,其中的一些点的讨论主要是面向新内核现代浏览器的标准 DO ...

最新文章

  1. 时序预测竞赛之异常检测算法综述
  2. 【Vegas原创】“無法解析 equal to 動作的定序衝突”错误的处理
  3. C++中接口与实现分离的技术
  4. (转)记录一次迁移 wss WebSocket 的事故
  5. sqlmap —— os-shell参数分析
  6. 如何锁定 Visual SourceSafe 数据库(转载)
  7. Java并发教程–信号量
  8. 【LeetCode】152. Maximum Product Subarray
  9. Ubuntu系统安装向日葵
  10. TG Pro for Mac(Mac电脑硬件温度监测工具)
  11. python下载pyhive包:
  12. telnet批量ip端口测试连通自动脚本
  13. Windows 如何完整备份驱动
  14. python语言在ansys的应用_Python语言在ANSYS的应用10讲-掌握SCDM脚本封装及ACT向导开发...
  15. 【半年时光-追寻你的足迹】
  16. 【漆天编程】最牛逼的均线交叉指标,做出了EA历史数据测试器的效果
  17. java魔法门1_魔法门之英雄无敌5
  18. 关于Java中的WeakReference类的笔记(弱引用)
  19. 基于STM32MP157的鸿蒙学习(一)— 资料下载及入门
  20. R语言--计算各种距离

热门文章

  1. 搞清楚字符编码09-万国码[5]
  2. 找靓机大促活动业务高峰护航案例
  3. 商家如何通过抖音带货?揭秘新手kol如何日带万单
  4. 学习技术的三部曲:WHAT、HOW、WHY
  5. G7组合按键进入各种模式方法
  6. 我们如何帮助难民学习编程,找到开发者工作
  7. 三菱伺服自动调谐_最大限度地发挥三菱变频器电机的性能(离线自动调谐)(3)...
  8. 使用edge浏览器,白嫖ChatGPT的保姆级教程来了
  9. excel数据分析思维导图整理
  10. python从入门到实践课后题答案第7章_【《Python编程: 从入门到实践》习题答案--第七章:】...