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

  • 荣耀手环怎么调时间(荣耀手环怎么调声音)

    荣耀手环怎么调时间(荣耀手环怎么调声音)

  • 手机怎么获得root权限(手机怎么获得cookie)

    手机怎么获得root权限(手机怎么获得cookie)

  • 固态硬盘读取写入速度多少正常(固态硬盘读取写入速度重要吗)

    固态硬盘读取写入速度多少正常(固态硬盘读取写入速度重要吗)

  • 微信界面变黑色了如何恢复(微信界面变黑色怎么调成白色)

    微信界面变黑色了如何恢复(微信界面变黑色怎么调成白色)

  • 12123支付界面空白(12123在线支付页面空白)

    12123支付界面空白(12123在线支付页面空白)

  • 电脑图片怎么转换格式(电脑图片怎么转成word文档格式)

    电脑图片怎么转换格式(电脑图片怎么转成word文档格式)

  • 华为p40无线充电功能在哪里设置(华为p40无线充电怎么用啊)

    华为p40无线充电功能在哪里设置(华为p40无线充电怎么用啊)

  • 华为荣耀x系列主打什么(华为荣耀X系列手机型号大全)

    华为荣耀x系列主打什么(华为荣耀X系列手机型号大全)

  • 怎么强制进入安全模式(怎么强制进入安全模式win11)

    怎么强制进入安全模式(怎么强制进入安全模式win11)

  • win7连上无线网络但不能上网(win7连上无线网不能上网)

    win7连上无线网络但不能上网(win7连上无线网不能上网)

  • 淘宝哪里查询性别姓名(怎么查看淘宝性别)

    淘宝哪里查询性别姓名(怎么查看淘宝性别)

  • 手机掉水之后多久充电(手机掉水之后多久充电好)

    手机掉水之后多久充电(手机掉水之后多久充电好)

  • 微信表情包审核要多久(微信表情包审核周末会审核吗)

    微信表情包审核要多久(微信表情包审核周末会审核吗)

  • 电脑不支持5gwifi如何解决(电脑不支持5gwifi用连接线可以吗)

    电脑不支持5gwifi如何解决(电脑不支持5gwifi用连接线可以吗)

  • 腾讯会议直播可以看回放吗(腾讯会议直播可以回放吗)

    腾讯会议直播可以看回放吗(腾讯会议直播可以回放吗)

  • 荣耀9x下巴多少毫米(荣耀9x之后)

    荣耀9x下巴多少毫米(荣耀9x之后)

  • 读卡器和u盘一样吗(读卡器和u盘一起用)

    读卡器和u盘一样吗(读卡器和u盘一起用)

  • 苹果手机怎么设置铃声(苹果手机怎么设置自己喜欢的铃声)

    苹果手机怎么设置铃声(苹果手机怎么设置自己喜欢的铃声)

  • 手机摔了一下黑屏了怎么办(手机摔了一下黑屏了但是能震动)

    手机摔了一下黑屏了怎么办(手机摔了一下黑屏了但是能震动)

  • 手机黑屏了怎么办(手机黑屏了怎么把里面的东西导出来)

    手机黑屏了怎么办(手机黑屏了怎么把里面的东西导出来)

  • word封面目录怎么弄(word封面目录怎么创建)

    word封面目录怎么弄(word封面目录怎么创建)

  • 抖音被关小黑屋视频也看不了是不是很严重(抖音被关小黑屋了要多久可以恢复正常)

    抖音被关小黑屋视频也看不了是不是很严重(抖音被关小黑屋了要多久可以恢复正常)

  • 红米k20pro可以升级MIUI11吗(红米k20pro可以升级安卓12吗)

    红米k20pro可以升级MIUI11吗(红米k20pro可以升级安卓12吗)

  • iphone11pro是不是双卡(iphone11pro是不是停产了)

    iphone11pro是不是双卡(iphone11pro是不是停产了)

  • 苹果手机应用锁怎么弄(苹果手机应用锁软件哪个好)

    苹果手机应用锁怎么弄(苹果手机应用锁软件哪个好)

  • 路由器登录网址有几种(360路由器登录网址)

    路由器登录网址有几种(360路由器登录网址)

  • surface笔的用处大吗(surface笔有用吗)

    surface笔的用处大吗(surface笔有用吗)

  • 水利建设基金计费方式
  • 组成计税价格的公式
  • 实验耗材计入什么科目
  • 可供出售金融资产和长期股权投资
  • 城镇土地使用税纳税义务发生时间
  • 技术合同免税备案流程2022年
  • 专利在审可以入库吗
  • 2019年残保金申报时间
  • 固定资产账实不符的审计定性
  • 收到电费发票做账摘要怎么写
  • 集团内部拨付的研发经费如何核算?
  • 原材料计划价实际价区别
  • 银行里的钱没有了怎么办
  • 深圳报关费用是多少
  • 开具增值税发票销货清单的最新规定是什么
  • 不用发票可以报销吗
  • 税收征管法实施条例
  • 房地产企业收到定金 什么时候交增值税 账务处理
  • 完税证明可以作为发票吗
  • 房产税计税税率怎么算
  • 资产负债表中的预付款项目应根据什么填列
  • 递延资产主要包括哪些
  • 无经营零申报公司注销要交印花税吗
  • 深度操作系统的窗口管理器
  • 生产车间机器设备日常维修
  • 允许企业所得税税前扣除的公益性捐赠的条件包括
  • 出租厂房折旧可以税前扣除
  • Win11怎么设置自启动软件
  • 跨年的发票冲红
  • PHP:session_set_save_handler()的用法_Session函数
  • 印花税税收优惠政策2023
  • php中的require
  • 预支员工报销费用会计科目
  • 逾期未收回包装物押金增值税
  • php使用oci8扩展连接oracle
  • 企业所得税的应纳税额计算公式
  • el-table懒加载合并行
  • php实现5分钟倒计时
  • 未分配利润转增股本要交税吗怎么交
  • 卷积神经网络结构
  • 微信小程序开发一个多少钱
  • 原生ajax和axios的区别
  • maven安装成功命令
  • imu模型
  • php curl_setopt
  • php实现页面静态化
  • 待抵扣进项税计入其他应收款
  • 固定资产内部转移单
  • 厂房转租会计分录
  • 会计科目在建工程含税吗
  • 防伪税款服务费抵扣
  • 差额冲账法
  • sql2005服务无法启动sql安装方法
  • 营业外收入的账户有哪些
  • 投资性房地产公允价值模式账务处理
  • 境外个人给境内个人汇款什么名义申报
  • 预缴增值税销售额是含税还是不含税的开票金额
  • 试生产期间的收入如何做账
  • 外购货物用于在建工程分录
  • 主营业务收入和营业外收入的区别
  • 企业以原有公司为主体
  • xp系统如何安装软件
  • 无线网络连接上但上不了网
  • centos7.5安装桌面
  • windows8设置自动关机
  • opengl es programming guide
  • jquery 获得焦点
  • shell自动化
  • js oncontextmenu事件使用详解
  • unity移动ui
  • 详细分析使用AngularJS编程中提交表单的方式
  • 基于nodejs的框架
  • python类怎么用
  • unity与android交互详细
  • 税务分局是什么意思
  • 国家扶贫项目有循环卡吗
  • 新形势下税务工作
  • 餐饮发票怎么看真假
  • 下载安徽税务app并安装
  • 乌鲁木齐交通服务电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设