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

  • 预收款交税规定
  • 劳务费用 税率
  • 简易计税方法使用范围
  • 购买研发设备的会计分录
  • 支付宝收付款如何关闭
  • 出售未计提完折旧的固定资产
  • 其他应付款在借方资产负债表怎么填
  • 资产负债表预收账款期末余额怎么算
  • 贴息是谁支付
  • 审计人员用餐费用
  • 小规模纳税人的税率是多少(含国、地税)
  • 小规模纳税人超过500万可以不转一般纳税人吗
  • 发票一直显示报送中怎么处理
  • 应交税费算什么费用
  • 不抵扣勾选怎么挽回
  • 进项税额转出凭证怎么做
  • 2021年保险营销员
  • 租金和物业费怎么计算
  • 汇算清缴涉及长期投资收益如何做会计核算?
  • 税控盘额度
  • 原材料因管理不善被盗的会计分录
  • 对个体工商户个人的认识
  • 财务费用为什么会出现负数
  • 财务会计制度备案操作流程
  • 拍短视频服务费怎么算
  • 电脑开机故障不开机
  • 增值税发票红字发票怎么开具
  • 公司转让使用过的汽车要交哪些税费
  • 企业向银行贷款要交印花税吗
  • 支付离退休人员退休金可以用现金结算吗
  • 三方债权债务抵消如何开发票
  • 委托贷款会计处理流程
  • php代码规范七大原则
  • php密码修改
  • 萨勒克国家公园课文
  • 结转已销售产品成本20000元
  • 固定资产加速折旧方法
  • 21世纪20年代的中国
  • chs命令
  • php的运算符主要包括哪些?
  • python设置断点
  • 企业日常费用支出明细表
  • 帝国cms采集发布的文章链接打不开
  • 小微企业的资产负债率一般为多少
  • 政府会计应付职工薪酬明细科目
  • 撰写广告
  • 中小型企业营业额和从业人数
  • 幼儿园伙食账目
  • 开票内容不在经营范围内
  • 上下班出车祸公司怎么赔偿
  • 票据背书转让挂什么科目
  • 电商账务怎么做
  • 收到的发票怎么做分录
  • 营业外支出科目核算的内容
  • 收到某企业一笔发票
  • 购入固定资产预计净残值
  • 个体工商户是否要交税
  • MSSQL SERVER 2005 数学函数整理
  • win7系统打开软件就停止工作
  • win8系统手机
  • ubuntu20.04.2
  • ubuntu zmq
  • win10打开或关闭功能在哪里
  • windows8使用教程
  • 离线安装macos
  • txt文件打开
  • linux收发邮件
  • uploadify文件上传
  • 获取磁盘失败代码0-0
  • eclipse安转
  • cmd新建
  • nodejs的流处理模块
  • shell 生成随机数每次运行都不一样
  • Facebook推出强大Android图片库Fresco 自动释放内存 图片缓存 内存益处
  • fiori开发工具
  • 宁波地铁支付宝可以刷吗
  • 耕地占用税 湖北
  • 从价计征和从租计征的区别,有什么优缺点
  • 内蒙古总工会工会经费
  • 什么叫做免抵税额
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设