位置: IT常识 - 正文

React中ref的使用方法和使用场景(详解)(react.fc)

编辑:rootadmin
React中ref的使用方法和使用场景(详解) 摘要

推荐整理分享React中ref的使用方法和使用场景(详解)(react.fc),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react ref,react中ref的用法,react form ref,react.fc,react.fc,react form ref,react.fc,react中的refs,内容如对您有帮助,希望把文章链接给更多的朋友!

不管在Vue中还是React,如果我们想使用一个元素的DOM,不需要通过JS中操纵DOM的方法,它们提供了一个专属的API就是ref。

而Vue中的ref可能比较简单,这一篇主要讲一下如何在React中使用ref,以及使用ref的场景。

1.ref的挂载

在React中,ref可以挂载到html元素上,同时也可以挂载在React元素上,看下面的代码:

import React, { Component } from 'react'// import { findDOMNode } from 'react-dom'import Child from './Child'export default class Father extends Component { componentDidMount(){ console.log(this.refs.refElement); console.log(this.refs.child); } render() { return ( <div> <input ref={ 'refElement' }></input> <Child ref={ 'child' }/> <button onClick={this.fn}>123</button> </div> ) }}

控制台的打印为:

可以看到,在React中,ref是可以挂载到HTML元素和React元素上的。

(1)挂载HTML元素,返回真实的DOM (2)挂载React元素,返回render后的实例对象

React中ref的使用方法和使用场景(详解)(react.fc)

同时React也提供了一个方法findDOMNode可以将React元素的ref返回变成真实的DOM元素。

import { findDOMNode } from 'react-dom' console.log(findDOMNode(this.refs.child));

同时在上面的代码我们也可以看出来,ref的挂载是在componentDidMount等生命周期之前执行的。

2.使用ref的三种方式

(1)字符串的方式

import React, { Component } from 'react'export default class Father extends Component { componentDidMount(){ console.log(this.refs.refElement); } render() { return ( <div> <input ref={ 'refElement' }></input> <button onClick={this.fn}>123</button> </div> ) }}

这种方式和Vue的ref比较相似,但是官方目前已经不推荐使用该方式,后续可能还会废弃。

(2)函数的方式

import React, { Component } from 'react'export default class Father extends Component { componentDidMount(){ console.log(this.refElement); } render() { return ( <div> <input ref={ ref => this.refElement = ref }></input> <button onClick={this.fn}>123</button> </div> ) }}

(3)react.CreateRef的方式

import React, { Component } from 'react'export default class Father extends Component { refElement = React.createRef(); componentDidMount(){ console.log(this.refElement.current); } render() { return ( <div> <input ref={this.refElement}></input> <button onClick={this.fn}>123</button> </div> ) }}

记住这里面通过refElement中的current,获取真实的DOM元素。

3.ref的使用场景

这里我们说一个比较常见的场景,就是点击按钮让输入框聚焦:

import React, { Component } from 'react'export default class Father extends Component { refElement = React.createRef(); componentDidMount(){ console.log(this.refElement.current); } fn = ()=>{ this.refElement.current.focus(); } render() { return ( <div> <input ref={this.refElement}></input> <button onClick={this.fn}>聚焦</button> </div> ) }}

通过获取DOM后,调用DOM上的focus方法API,来让input框进行聚焦。

同时ref也可以适用于一些DOM元素的动画效果,例如移动,变大变小,都需要通过ref来控制DOM,进行操作。

本文链接地址:https://www.jiuchutong.com/zhishi/299288.html 转载请保留说明!

上一篇:Vue3 从入门到放弃 (第一篇.环境准备)(vue3的)

下一篇:出道即封神的ChatGPT,现在怎么样了?(真正的出道仙谁来封)

  • 苹果xr双卡槽在哪(苹果xr双卡槽怎么取卡)

    苹果xr双卡槽在哪(苹果xr双卡槽怎么取卡)

  • 可以无线充电的手机有哪些(可以无线充电的vivo手机)

    可以无线充电的手机有哪些(可以无线充电的vivo手机)

  • 华为5g手机支持哪些频段(华为5g手机支持nfc的有哪些)

    华为5g手机支持哪些频段(华为5g手机支持nfc的有哪些)

  • 微信视频动态时长限制是好多(微信视频动态啥意思)

    微信视频动态时长限制是好多(微信视频动态啥意思)

  • 如何把淘宝里面的退款记录删除(如何把淘宝里面的银行卡去除)

    如何把淘宝里面的退款记录删除(如何把淘宝里面的银行卡去除)

  • 佳能70200一代二代区别大吗(佳能70200一代二代的区别)

    佳能70200一代二代区别大吗(佳能70200一代二代的区别)

  • 华为屏幕录制怎么去掉那个小点(华为屏幕录制怎么关闭)

    华为屏幕录制怎么去掉那个小点(华为屏幕录制怎么关闭)

  • 抖音已重置的人怎么找(抖音已重置的人怎么删除)

    抖音已重置的人怎么找(抖音已重置的人怎么删除)

  • 快速迭代什么意思(迭代速度快)

    快速迭代什么意思(迭代速度快)

  • 荣耀手环5开机不了(荣耀手环5开机教程)

    荣耀手环5开机不了(荣耀手环5开机教程)

  • 电脑上小写字母怎么输入(电脑上小写字母g怎么打)

    电脑上小写字母怎么输入(电脑上小写字母g怎么打)

  • 相册永久删除的照片怎么恢复(相册永久删除的照片还能恢复吗)

    相册永久删除的照片怎么恢复(相册永久删除的照片还能恢复吗)

  • 苹果7p屏幕版本区分(苹果7p屏幕版本在哪里看)

    苹果7p屏幕版本区分(苹果7p屏幕版本在哪里看)

  • 台式电脑主要的5个组成部分(台式电脑主要的配置)

    台式电脑主要的5个组成部分(台式电脑主要的配置)

  • 系统测试的目的和意义

    系统测试的目的和意义

  • 腾讯会议开了视频其他人会看得到吗(腾讯会议开了视频)

    腾讯会议开了视频其他人会看得到吗(腾讯会议开了视频)

  • 手机截不了屏怎么回事(手机截不了屏咋办)

    手机截不了屏怎么回事(手机截不了屏咋办)

  • 多媒体的压缩标准有哪些(多媒体的压缩标准是什么)

    多媒体的压缩标准有哪些(多媒体的压缩标准是什么)

  • oppoa3上市时间(oppoA3上市时间)

    oppoa3上市时间(oppoA3上市时间)

  • 抖音点不了赞怎么办(抖音上点不了赞咋办)

    抖音点不了赞怎么办(抖音上点不了赞咋办)

  • ssl协议工作在哪一层(ssl协议的工作流程是什么)

    ssl协议工作在哪一层(ssl协议的工作流程是什么)

  • 手机京东在哪里加好友(手机京东在哪里切换账号)

    手机京东在哪里加好友(手机京东在哪里切换账号)

  • 小爱和小艺买哪个(小爱和小艺对比)

    小爱和小艺买哪个(小爱和小艺对比)

  • 三星a8s上市时间(三星a8s上市时间是哪年的)

    三星a8s上市时间(三星a8s上市时间是哪年的)

  • 抖音头饰在哪里(抖音头饰怎么获得)

    抖音头饰在哪里(抖音头饰怎么获得)

  • 睿易路由器设置方法(睿易路由器设置网址)

    睿易路由器设置方法(睿易路由器设置网址)

  • 全民k歌怎么关闭自动续费(全民k歌怎么关闭自动播放)

    全民k歌怎么关闭自动续费(全民k歌怎么关闭自动播放)

  • 【数据挖掘】-支持向量机(SVM)+代码实现(数据挖掘论文选题)

    【数据挖掘】-支持向量机(SVM)+代码实现(数据挖掘论文选题)

  • python不能覆盖文件内容如何解决(python 覆盖)

    python不能覆盖文件内容如何解决(python 覆盖)

  • 投资者从其投资企业借款
  • 无合同销售收入怎么算
  • 增值税怎么做账务处理
  • 收到银行存兑汇票
  • 计提工资是计提哪个月的
  • 营业执照办理税务登记需要什么资料
  • 金蝶财务系统录入发票
  • 连锁店每个店都要独立核算吗
  • 个体营业执照从哪里查询
  • 申报入库税款怎么分税种发给税管员
  • 企业想成为退税商店需具备哪些条件
  • 固定资产投资转化为gdp比例
  • 代扣代缴的车船税现金流量怎样分配
  • 公司出差开自己的车怎么计算损耗
  • 单位充话费送手机
  • 应交税费是什么科目借贷方向
  • 怎么确认收到的钱是哪个项目的
  • excel单元格内换行macbook
  • 宣传费开票属于什么费用
  • 累计折旧费用
  • 农业大棚卷帘机用什么油
  • 暂估入库有时间限制吗
  • 以无形资产进行投资
  • 企业无法取得发票,如何税前扣除
  • mstore.exe - mstore是什么进程 有什么用
  • 无形资产出租的账务处理
  • 医疗保险在外地交了老家还要交吗
  • 鼠标按键多有用吗
  • 无形资产的摊销计入什么科目
  • 发财树怎么修剪枝叶视频教程
  • php中imagecreatefromjpeg
  • anaconda虚拟机
  • 资产负债表利润表的勾稽关系
  • PHP面向对象程序设计
  • php百分比
  • zero-shot, one-shot和few-shot
  • 固定资产转卖会亏本吗
  • python导入其他文件的函数
  • 发ai的英文单词
  • vue父子组件传值
  • read命令功能
  • 专项应付款怎么转固定资产
  • python编程bim
  • 其他收益在利润表填在哪里
  • 富文本word
  • 出口退税转内销的损失
  • 购置环保设备一次性扣除
  • 去年一个月工资未计提直接计入成本,现在如何调整
  • 国地税合并对个人带来的影响
  • 写字楼里的公司怎么赚钱
  • 购入库存商品会计摘要怎么写
  • 有发票还要填写领款单吗
  • 资产处置损益的明细科目
  • 增值税普通发票需要交税吗
  • 折扣怎么写会计分录
  • 生物性资产是什么科目
  • 纳税人购进国内商品
  • 主营业务毛利率和毛利率
  • 出口转内销进项税额怎么进附表二
  • mysql5.7分区表
  • mysql如何修改默认值
  • services.exe修改注册表
  • centos破解密码命令
  • solaris newfs
  • pe工具箱怎么用
  • nw.exe是什么进程
  • 批处理 >nul
  • c opengl
  • androidui布局
  • 范冰冰魔范学院杂志可爱公主风
  • javascript编程基础
  • shell脚本传参数给命令
  • python web ui
  • javascript核心技术开发解密
  • Python中遍历字典
  • JQuery解析XML数据的几个简单实例
  • The method findViewById(int) is undefined for the type FragmentHome报错
  • 山东威海文登宋村镇有哪些村
  • 重庆路桥价值
  • 举报信如何投递
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设