前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >React的三大属性之refs的一些简单理解

React的三大属性之refs的一些简单理解

原创
作者头像
henu_Newxc03
发布于 2021-12-26 04:54:32
发布于 2021-12-26 04:54:32
87300
代码可运行
举报
运行总次数:0
代码可运行

什么是refs?

Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。 Ref转发是一项将ref自动通过组件传递到子组件的技巧。 通常用来获取DOM节点或者React元素实例的工具。在React中Refs提供了一种方式,允许用户访问dom节点或者在render方法中创建的React元素。

refs的使用场景

在某些情况下,我们需要在典型数据流之外强制修改子组件,被修改的子组件可能是一个 React 组件的实例,也可能是一个 DOM 元素,例如:

  • 管理焦点,文本选择或媒体播放。
  • 触发强制动画。
  • 集成第三方 DOM 库。

如何使用refs?

方式一: createRef (>= React16.3)

一般在构造函数中将refs分配给实例属性,以供组件的其它方法中使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//对于HTML elements:可以获取元素实例

class App extends React.Component{
    constructor(props) {
        super(props);
   //一般来说,我们需要在constructor里面初始化一个ref,然后就能在return里用了
        this.myRef = React.createRef();
        console.log(this.myRef)
      }
      componentDidMount(){
        this.myRef.current.innerHTML = '赛亚人'
      }
      render() {
        return <div ref={this.myRef} />;
      }
}

//上面的this.myRef有一个current属性:

//如果ref属性被用于html元素,那么它的值是底层DOM元素。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//对于Class Components:可以获取组件类的实例

class App extends React.Component{
    constructor(props) {
        super(props);
        this.myRef = React.createRef();
        console.log(this.myRef)
      }
      componentDidMount(){
        this.myRef.current.bianshen() // 也就是说,可以允许父组件调用子组件的方法
      }
      render() {
        return <Children ref={this.myRef} />;
      }
}
class Children extends React.Component{
    bianshen(){
        console.log('超级赛亚人变身')
    }
      render() {
        return <span>超级赛亚人变身</span>;
      }
}

//上面的this.myRef有一个current属性:

//如果ref属性被用于自定义类组件,那么它的值是已挂载的这个自定义类组件的实例。

提示:对于Function Components:无法获取

方式二: 回调Refs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class App extends React.Component{
    constructor(props) {
        super(props);
        this.targetRef = null
        this.myRef = (e)=> this.targetRef = e;
      }
      componentDidMount(){
        if(this.targetRef){
            this.targetRef.innerHTML = '贝吉塔'
        }
      }
      render() {
        return <div ref={this.myRef} />;
      }
}

方式三:String 类型的 Refs (已过时,不推荐使用)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class StringRef extends Component {
  componentDidMount() {
    console.log('this.refs', this.refs);
  }
  render() {
    return (
      <div ref="container">
        StringRef
      </div>
    )
  }
}

方式四: useRef (React Hooks)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { useRef } from 'react';
function RefExample(props){
    const inputElement = useRef()
    return(<div>
        <input ref={inputElement}></input>
        <button onClick={()=>{
            inputElement.current.focus()
        }}>focus</button>
    </div>)
}

本文内容如有错误,请以官方文档为准。

这篇博客借鉴了很多大佬博客中的思路,非常感谢大佬们的无私共享!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【React】:Refs
Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。
WEBJ2EE
2020/04/07
1.1K0
React ref 的前世今生
众所周知,React 通过声明式的渲染机制把复杂的 DOM 操作抽象成为简单的 state 与 props 操作,一时圈粉无数,一夜间将前端工程师从面条式的 DOM 操作中拯救出来。尽管我们一再强调在 React 开发中尽量避免 DOM 操作,但在一些场景中仍然无法避免。当然 React 并没有把路堵死,它提供了 ref 用于访问在 render 方法中创建的 DOM 元素或者是 React 组件实例。
Nealyang
2019/09/29
8980
在React 中,如何创建refs?
在类组件中,可以使用 React.createRef() 方法来创建 ref 对象。通常,在组件的构造函数中将 ref 赋值给类的实例属性。
王小婷
2023/10/10
8190
[OHIF-Viewers]医疗数字阅片-医学影像-REACT-React.createRef()-Refs and the DOM关于回调 refs 的说明
Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。
landv
2020/07/09
1.8K0
React 中refs的使用方法和步骤
在 React 中,ref 是一种用于访问组件或 DOM 元素的引用的特殊属性。在组件中存储对 DOM 节点或组件实例的引用,直接访问和操作
王小婷
2023/10/10
4510
浅谈 React Refs
在React组件中,props是父组件与子组件的唯一通信方式,但是在某些情况下我们需要在props之外强制修改子组件或DOM元素,这种情况下React提供了Refs解决
IMWeb前端团队
2019/12/03
1K0
浅谈 React Refs
React字符串形式的ref
在React中,我们可以使用字符串形式的ref来引用组件或DOM元素。字符串形式的ref是一种较早的ref使用方式,它允许我们通过字符串将ref与组件或DOM元素进行关联。
堕落飞鸟
2023/05/19
5870
【React】你想知道的关于 Refs 的知识都在这了
Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。
Nealyang
2019/11/08
3.1K0
小结React(三):state、props、Refs
在React中state、props、Refs都是最基础的概念,本文将同时梳理下这三个知识点,主要内容包括:
前端林子
2019/05/02
7.5K1
小结React(三):state、props、Refs
React 进阶 - Ref
ref 对象就是用 createRef 或者 useRef 创建出来的对象,一个标准的 ref 对象应该是如下的样子:
Cellinlab
2023/05/17
1.8K0
React 进阶 - Ref
React createRef的使用
在React中,我们可以使用createRef()方法来创建一个ref对象。createRef()方法返回一个可变的ref对象,该对象可以被附加到React组件或DOM元素上,并允许我们在需要时引用该组件或DOM元素。
堕落飞鸟
2023/05/19
6650
React框架基础
郭顺发
2023/07/17
2310
React--10: 组件的三大核心属性3:refs与事件处理
如果你之前使用过 React,你可能了解过之前的 API 中的 string 类型的 ref 属性,例如 "textInput"。你可以通过 this.refs.textInput 来访问 DOM 节点。我们不建议使用它,因为 string 类型的 refs 存在一些效率上的问题。它已过时并可能会在未来的版本被移除(16.8版本还没有移除)。
用户4793865
2023/01/12
1.1K0
React——组件的三大核心属性【七】
思索
2024/08/16
2050
React——组件的三大核心属性【七】
React的ref是怎样调用其他元素?
ref 可以理解为指向React 元素的变量,方便其他组件访问这个React元素。
Learn-anything.cn
2021/11/28
1K0
react入门(三):state、ref & dom简解
作用:组件内部的状态重新更新时,可以控制组件内部重新渲染(不需要重新调取组件也可以重新渲染)
柴小智
2020/02/12
8990
React---组件实例三大核心属性(三)refs与事件处理
    获取值:const { input1 } = this.refs; console.log(input.value)
半指温柔乐
2021/04/22
1.2K0
React中refs的理解
Refs提供了一种方式,允许我们访问DOM节点或在render方法中创建的React元素。
WindRunnerMax
2021/01/21
1.7K0
React-组件-Ref
官方文档:https://zh-hans.reactjs.org/docs/refs-and-the-dom.html#gatsby-focus-wrapper
杨不易呀
2023/09/30
2590
【React】243- 在 React 组件中使用 Refs 指南
本文通过四种方式来告诉你如何使用,虽然有一种被放弃了。今日早读文章由老虎集团@joking_zhang翻译授权分享。
pingan8787
2019/07/25
4.1K0
【React】243- 在 React 组件中使用 Refs 指南
相关推荐
【React】:Refs
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验