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

  • 出口货物退免税政策
  • 销售财务软件的公司怎么做账
  • 开立一般户需要基本户开户行许可证吗
  • 机票抵扣进项只能在发生当月吗
  • 消费卡预付卡能入账吗
  • 房产经纪公司成本费用
  • 境内a上市公司非限售股股票转让所得怎么交个人所得税
  • 股票投资会计科目
  • 商业承兑汇票可以提前承兑吗
  • 单位表彰性奖金是什么
  • 海关进口增值税如何入账
  • 溢价发行股票的账务处理
  • 契税法律依据
  • 外资企业所得税优惠政策
  • 发票与报税记录不一致
  • 增值税发票有哪些类型
  • 企业不动产如何带抵押转让
  • 企业缴纳印花税会计分录
  • 上月开的发票本月作废怎么处理
  • 小规模无票收入后期开票怎么申报
  • 委托贷款利息收入怎么开发票
  • 食堂买菜怎么算
  • win7更改电脑设置在哪里
  • 鸿蒙工具箱巅峰模式有什么用
  • 物业公司收取水电周转金后果
  • 如何解决windows7台试电脑蓝屏问题
  • php pdo分页
  • 公司收到医疗保障局打入的钱怎么做账
  • 股东变更股权转让未分配利益
  • paytime.exe - paytime是什么进程 有什么用
  • 股本减少的账务怎么处理
  • php date_diff
  • 夫妻房子归属权问题
  • 已经开票但是未达到收入确认条件的怎么进行账务处理
  • 分公司股东怎么填
  • 花雕典故
  • 无盘领发票要怎么办
  • Yii 连接、修改 MySQL 数据库及phpunit 测试连接
  • 利得都需要缴纳企业所得税吗
  • 陈列费怎么开票
  • 银行存款出现负数怎么办
  • 受托方代销商品会计分录
  • 房地产企业怎么预缴企业所得税
  • 科目余额表平是什么情况
  • 没有发票意味着什么
  • 进项税额转出冲回
  • 子公司计提的盈余公积合并抵消
  • 取得无形资产时增值税进项税额的处理
  • 挂靠单位账务处理是?
  • 交易性金融资产的入账价值
  • 工程款开票数量和单价要填吗
  • 固定资产是每月折旧吗
  • 管理费用和财务费用期末有无余额
  • 年底应交增值税是没有余额吗
  • 转账时转错账号怎么办
  • 公司购买的办公楼怎么交房产税
  • sql优化的一般步骤
  • Advanced Pagination for MySQL(mysql高级分页)
  • mysql触发器使用
  • win7卸载KB2952664/KB3035583补丁的详细图文教程
  • u盘安装win8.1系统教程
  • solaris newfs
  • switcher.exe - switcher是什么进程
  • xp administrator隐藏如何找回解决方案
  • windows8使用技巧
  • w8网络设置
  • win10系统应用更新
  • win7专用字符编辑程序的使用方法
  • cocos2dx schedule
  • javascript RegExp 使用说明
  • javascript的区别
  • nodejs入门教程
  • python组合运算
  • python字典添加多个键值对
  • python flask
  • 全国低保查询系统网站
  • 深圳前海地铁站几号线
  • 发票缴销办理流程图
  • 酒店访客时间是几个小时
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设