React中的ref属性的使用示例详解

 更新时间:2023年04月23日 11:01:01   作者:前端-阿辉  
React 提供了 refrefref 属性,让我们可以引用组件的实例或者原生 DOM 元素,使用 refrefref,可以在父组件中调用子组件暴露出来的方法,或者调用原生 element 的 API,这篇文章主要介绍了React中的ref属性的使用,需要的朋友可以参考下

ref 简介

React提供的这个ref属性,表示为对组件真正实例的引用,其实就是ReactDOM.render()返回的组件实例;需要区分一下,ReactDOM.render()渲染组件时返回的是组件实例;而渲染dom元素时,返回是具体的dom节点。

例如,下面代码:

const domCom = <button type="button">button</button>;
const refDom = ReactDOM.render(domCom,container);
//ConfirmPass的组件内容省略
const refCom = ReactDOM.render(<ConfirmPass/>,container);
console.log(refDom);
console.log(refCom);

1. 字符串形式的ref

import React, { Component } from 'react'

export default class index extends Component {
  showData = () => {
    // 获取input节点
    const { inputRef } = this.refs

    // 输出input值
    console.log(inputRef.value);
  }
  render() {
    return (
      <div>
        <input ref="inputRef" type="text" placeholder="点击按钮提示数据"/>&nbsp;
        <button onClick={ this.showData }>点我提示输入框值</button>
      </div>
    )
  }
}

2. create形式的ref

import React, { Component } from 'react'

export default class index extends Component {
// React.createRef调用后返回一个容器,存储被ref标识的节点,单一使用。也就是说,没定义一个ref就要调用一次React.createRef
  inputRef = React.createRef()

  showData = () => {
    const refVal = this.inputRef.current

    console.log(refVal.value);
  }
  render() {
    return (
      <div>
        <input ref={ this.inputRef } type="text" placeholder="点击按钮提示数据"/>&nbsp;
        <button onClick={ this.showData }>点我提示输入框值</button>
      </div>
    )
  }
}

3. 回调函数形式的ref

import React, { Component } from 'react'

export default class index extends Component {
  showData = () => {
    const { inputRef } = this

    console.log(inputRef.value);
  }
  render() {
    return (
      <div>
        {/* 这里传入一个回调函数 */}
        <input ref={ currentNode => this.inputRef = currentNode } type="text" placeholder="点击按钮提示数据"/>&nbsp;
        <button onClick={ this.showData }>点我提示输入框值</button>
      </div>
    )
  }
}

总结:

综合以上三种形式各有优缺点,方式1与方式2写起来比较方便但是比较繁琐,方式三通过传入一个回调函数,不但简化了操作还不失优雅,显得代码逼格高些,但在最新版及以后的版本中,React官方使用函数式编程,所以更推荐使用create形式的ref。

到此这篇关于React中的ref属性的使用的文章就介绍到这了,更多相关React ref属性使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React props和state属性的具体使用方法

    React props和state属性的具体使用方法

    本篇文章主要介绍了React props和state属性的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • react性能优化useMemo与useCallback使用对比详解

    react性能优化useMemo与useCallback使用对比详解

    这篇文章主要为大家介绍了react性能优化useMemo与useCallback使用对比详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • React diff算法的实现示例

    React diff算法的实现示例

    这篇文章主要介绍了React diff算法的实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • React中的for循环解读

    React中的for循环解读

    这篇文章主要介绍了React中的for循环解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介绍了ReactNative列表ListView的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • React中this丢失的四种解决方法

    React中this丢失的四种解决方法

    这篇文章主要给大家介绍了关于React中this丢失的四种解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用React具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 从零开始搭建webpack+react开发环境的详细步骤

    从零开始搭建webpack+react开发环境的详细步骤

    这篇文章主要介绍了从零开始搭建webpack+react开发环境的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 基于React和antd实现自定义进度条的示例代码

    基于React和antd实现自定义进度条的示例代码

    在现代 Web 开发中,进度条是一种常见且实用的 UI 组件,用于直观地向用户展示任务的完成进度,本文将详细介绍如何使用 React 来构建一个自定义的进度条,它不仅能够动态展示进度,还具备额外的信息提示功能,需要的朋友可以参考下
    2025-03-03
  • react项目如何运行在微信公众号

    react项目如何运行在微信公众号

    这篇文章主要介绍了react项目如何运行在微信公众号,帮助大家更好的理解和学习使用react,感兴趣的朋友可以了解下
    2021-04-04
  • ReactiveCocoa代码实践之-UI组件的RAC信号操作

    ReactiveCocoa代码实践之-UI组件的RAC信号操作

    这篇文章主要介绍了ReactiveCocoa代码实践之-UI组件的RAC信号操作 的相关资料,需要的朋友可以参考下
    2016-04-04

最新评论