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

  • aisino金税盘怎么安装在电脑上
  • 税控盘白盘和黑盘一样吗
  • 新公司和旧公司对比
  • 网银转账往来款
  • 个税申报错了并且已经缴款怎么修改
  • 预缴的附加税月末结转吗
  • 小规模纳税人一个季度多少免税
  • 发票代码有误什么意思
  • 债券投资收益怎样计算
  • 企业股利分配政策有哪些
  • 盘盈固定资产属于企业的会计差错
  • 新企业第一次报所得税
  • 税务稽查可否清算土地增值税
  • 土地转让契税税率2020税率表
  • 异地学习期间产生的餐费住宿费怎么做账?
  • 公司贷款买车是公司还款吗
  • 银行结算方式包括哪些内容
  • 三证合一后纳税人识别号和信用代码一样吗
  • 公司注销固定资产怎么处理税怎么交
  • 公司两套账怎么记账
  • 暂估入库的货物销售了当月多交增值税了
  • 待处理财产损益的二级科目
  • 企业所得税税率2.5% 5% 25%
  • 工商年报股东变更申请
  • win10怎么建立多个用户
  • 汇算清缴退税怎么调整金额
  • 企业所得税按月或者按季预缴
  • 怎么取消电脑开机自动启动软件
  • win7网络适配器不见了怎么恢复
  • 博茨瓦纳热吗
  • php添加扩展
  • php数组实现
  • pytorch基础教程
  • 什么叫非侵入性装置
  • 哈士奇新手礼包
  • 编程前十名
  • php如何判断用户是否在线
  • 什么是政府项目档案
  • 四舍五入的弊端
  • 其他综合收益转入留存收益还是投资收益
  • sqlsever修改数据
  • 税务局退回来的钱账务处理
  • 水灾期间未生产怎么处理
  • 印花税会计处理办法
  • 企业有哪些固定资产
  • 民间非营利组织会计制度及操作实务
  • 小规模免税收入是多少
  • 招待客户的住宿费发票可以报销吗
  • 自用房地产转换为采用成本模式计量的投资性房地产
  • 预付款已经开了发票未到货要怎么做账
  • 运输公司车辆保养记录表格
  • 当月已经认证的发票可以取消认证吗
  • 以前年度损益调整账务处理分录
  • 过户前交了契税能退吗
  • 关于财务报销的法律
  • 利润表怎么没有本月数
  • 购买金税盘取得的发票
  • 学会计前景好吗
  • 我国开征股票交什么税
  • 建账时应考虑的问题包括下列哪三项
  • mysql 5.7.13 winx64安装配置方法图文教程
  • 一个分页存储过多的文件
  • 找回未保存的cad文件
  • 怎么快速
  • uefimbr安装win7
  • 如何创建微软帐户
  • win8.1自带usb3.0驱动吗
  • linux更新配置
  • mobile windows
  • linux怎样使用
  • jquery使用教程
  • scrollcontroller
  • 批处理系统定义
  • python3正则
  • bootstrap css框架
  • jQuery Ajax Post 回调函数不执行问题的解决方法
  • 四川国税网上申报
  • 企业代理申报还用自己申报吗
  • 法律服务所与律师事务所区别
  • 重庆市房产交易信息网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设