位置: 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,现在怎么样了?(真正的出道仙谁来封)

  • cpu温度过高(cpu温度)(CPU温度过高会怎么样)

    cpu温度过高(cpu温度)(CPU温度过高会怎么样)

  • 荣耀x20怎么设置字体大小(荣耀x20怎么设置骚扰电话拦截)

    荣耀x20怎么设置字体大小(荣耀x20怎么设置骚扰电话拦截)

  • 抖音关闭活跃状态对方还能看到吗(抖音关闭活跃状态已读对方消息会显示吗)

    抖音关闭活跃状态对方还能看到吗(抖音关闭活跃状态已读对方消息会显示吗)

  • 微信可以删除对方列表的自己吗(微信可以删除对方和自己的聊天记录吗)

    微信可以删除对方列表的自己吗(微信可以删除对方和自己的聊天记录吗)

  • 苹果手机可以截视频的功能在哪里(苹果手机可以截图吗)

    苹果手机可以截视频的功能在哪里(苹果手机可以截图吗)

  • 华为手机微信如何下载(华为手机微信如何投屏到电视机上)

    华为手机微信如何下载(华为手机微信如何投屏到电视机上)

  • 怎么把下载的音乐改成mp3格式(怎么把下载的音乐移到内存卡)

    怎么把下载的音乐改成mp3格式(怎么把下载的音乐移到内存卡)

  • 苹果11可以滚动截长图吗(苹果11滚动屏幕怎么设置)

    苹果11可以滚动截长图吗(苹果11滚动屏幕怎么设置)

  • 淘宝提问为什么看不到(淘宝提问为什么发不出去)

    淘宝提问为什么看不到(淘宝提问为什么发不出去)

  • 手机内屏出现紫色扩散怎么办(手机内屏出现紫色扩散能坚持多久)

    手机内屏出现紫色扩散怎么办(手机内屏出现紫色扩散能坚持多久)

  • 手机弯曲对手机有啥影响(手机弯曲对眼睛有影响吗)

    手机弯曲对手机有啥影响(手机弯曲对眼睛有影响吗)

  • airpods信号经常断断续续(airpods信号不好 可能是手机的问题吗)

    airpods信号经常断断续续(airpods信号不好 可能是手机的问题吗)

  • 如何屏蔽微信群中一个人发的信息(如何屏蔽微信群里某个人发的消息)

    如何屏蔽微信群中一个人发的信息(如何屏蔽微信群里某个人发的消息)

  • 怎样使用快捷菜单复制文本(怎样使用快捷菜单键)

    怎样使用快捷菜单复制文本(怎样使用快捷菜单键)

  • 显示器显示输入不支持怎么回事(显示器显示输入信号超出范围怎么回事)

    显示器显示输入不支持怎么回事(显示器显示输入信号超出范围怎么回事)

  • powerpoint文档不可以保存为(powerpoint文档不可以保存为()文件)

    powerpoint文档不可以保存为(powerpoint文档不可以保存为()文件)

  • m1906f9sc是什么型号(m1903f11a是什么型号)

    m1906f9sc是什么型号(m1903f11a是什么型号)

  • 小米cc9e支持30w快充吗(小米cc9e支持nfc吗)

    小米cc9e支持30w快充吗(小米cc9e支持nfc吗)

  • oppoa73截屏在哪(oppoa73截图在哪里)

    oppoa73截屏在哪(oppoa73截图在哪里)

  • 联通号能转归属地吗(联通能否转归属地)

    联通号能转归属地吗(联通能否转归属地)

  • 手机话费能提现吗(手机话费能提现出来吗)

    手机话费能提现吗(手机话费能提现出来吗)

  • 华为p30怎么拍星星(华为p30怎么拍星空夜景)

    华为p30怎么拍星星(华为p30怎么拍星空夜景)

  • 磁盘碎片化整理在哪里(磁盘碎片化整理和磁盘清理区别)

    磁盘碎片化整理在哪里(磁盘碎片化整理和磁盘清理区别)

  • 笔记本键帽怎么拆(笔记本键帽怎么装回去)

    笔记本键帽怎么拆(笔记本键帽怎么装回去)

  • 怎么看探探号是否封了(怎么看探探是否异常)

    怎么看探探号是否封了(怎么看探探是否异常)

  • 苹果MAC教程:spotlight搜索的意思说明(mac教程视频)

    苹果MAC教程:spotlight搜索的意思说明(mac教程视频)

  • 苹果语音备忘录导出教程(苹果语音备忘录怎么导出)

    苹果语音备忘录导出教程(苹果语音备忘录怎么导出)

  • 核心圈好图书推荐(二)(核心书评价格)

    核心圈好图书推荐(二)(核心书评价格)

  • 宝塔主机分销系统1.7版本无限安装版可给用户开宝塔虚拟机免费下载-电脑学习网(宝塔主机分销系统设计)

    宝塔主机分销系统1.7版本无限安装版可给用户开宝塔虚拟机免费下载-电脑学习网(宝塔主机分销系统设计)

  • 进口设备退税如何账务处理?
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 实际发的工资跟个人所得税不一样
  • 股票交易费用计算器
  • 以前年度费用调减
  • 金蝶导出报表
  • 稿费计入成本怎么做账
  • 设备配件定义
  • 当月开的发票次月预缴税款行得通吗?
  • 维护费可以留到明年抵扣吗?
  • 小规模纳税人季报需要报什么
  • 海关进口增值税专用缴款书如何抵扣
  • 金融合同违约金罚息
  • 印花税减半优惠政策2019
  • 常见的审计调整事项
  • 民间非营利组织会计制度最新版
  • 投资性房地产公允价值模式账务处理
  • 购进材料是进项税还是销项税
  • 企业福利费支出范围
  • 结算备付金的账户是什么
  • php ftp函数
  • 预收账款为什么不属于金融负债
  • 财务费用利息收入怎么结转
  • PHP:pg_lo_read_all()的用法_PostgreSQL函数
  • 工程决算审计费收费标准
  • 鼠标按键多有用吗
  • 退休费用会计分录
  • 外购商品转为自用洧费税计算
  • yii框架连接数据库
  • 预算会计与财务会计适度分离
  • 微信小程序的视频怎么下载
  • c#创建web
  • 哪里能找到前端练手项目教程
  • metareplace -e
  • 如何正确配置防火墙安全策略
  • 未开票收入为负数是什么意思
  • dedecms使用教程
  • 工会经费没有交能买发票吗
  • 营业外收支核算的内容有哪些?
  • three.js gui
  • 食堂洗碗机操作规程
  • uniapp开发总结
  • 保函被索赔支付什么意思
  • 拍卖收入个人所得税
  • 小微企业季度申报所得税税率
  • 拓展费用入什么科目
  • 两免三减半取消了吗
  • 工程结算科目
  • 深入理解计算机系统
  • mysql 索性
  • 个体户和公司的税收相差多少
  • 员工意外险税前扣除比例
  • 工程一般挂靠取得的收入怎么做账?
  • 实收资本可以做现金吗
  • 小企业固定资产折旧方法包括
  • 往来的款项性质有哪些
  • 税控盘开发票怎么测试打印机?
  • 税控开具发票
  • 借用别的公司资质的协议范本
  • 预付工资怎么入账
  • 在centos上安装ftp服务应运行指令
  • 在sql查询中使用where子句指定的是
  • Windows 2008 R2 AD组策略-统一域用户桌面背景详细图文教程
  • windows如何安装安卓软件
  • linux解析命令
  • 经典璧纸
  • wray是什么意思
  • windowsxp改密码怎么改
  • windows聚焦失效
  • 怎么处理人际关系
  • javascript HTML5文件上传FileReader API
  • Js组件开发方式
  • parentElement,srcElement的使用小结
  • jquery添加删除属性
  • nodejs操作mongodb
  • jquery监听span内容的变化
  • 道路运输业属于工贸行业吗
  • 公司地址变更后社保要改吗
  • 国税局黑龙江省
  • 中医药文化进校园活动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设