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

  • 购销合同印花税计税金额含税吗
  • 开普票需要交税多少
  • 运费增值税税率有5吗
  • 账簿印花税的计税方法
  • 事业单位长期股权投资持有期间被投资单位
  • 无形资产减值损失一经确认在以后期间不得转回
  • 金税盘没有报税管理怎么把发票明细怎么导出
  • 出售自用汽车的税率
  • 个体户交了增值税又开负数发票怎么退税
  • 未担保余值列报
  • 劳务派遣增值税怎么算
  • 申请发票增额有没有什么条件
  • 会计学中管理费用属于什么
  • 终止合同后原合同怎么处理
  • 净现金流量率计算公式
  • 企业收到外汇的账务处理
  • 小规模和一般纳税人的区别
  • 残疾人就业保障金怎么申报
  • 2019年收入不足6万如何退税
  • 分类所得申报要申报吗
  • 股份利润怎么分
  • 房地产企业收到房款账务处理
  • win11如何安装安卓app
  • win 10 请稍后
  • 怎样结转销售成本会计分录
  • 电子商务如何做账
  • 私账的钱怎么弄到公账
  • 收到水电费的增值税普通发票怎么做账
  • 存货计划成本法好处
  • 华为手机隐藏应用
  • win10专业版用户名和密码怎么取消
  • 暂估营业成本怎做分录
  • 共享文档无法访问如何解决
  • 企业固定资产有哪些
  • mxtask.exe - mxtask是什么进程文件 有什么用
  • 资产减值损失结转怎么算
  • 存货损失是指什么
  • thinkphp try catch
  • 本月增加的无形资产数量
  • python采集器
  • 个人独资企业都需要交什么税
  • 玩转ChatGPT:中科院ChatGPT Academic项目部署与测评
  • 税务局手续费返还政策
  • 营业收入为什么不包括营业外收入
  • 个人注册投资有限公司
  • 预付和挂账怎么做分录
  • 抵押房产的保险费
  • python os.path模块
  • sql server 2008简介
  • 原材料发生退货怎么处理
  • 个人抬头的发票可以入账吗
  • 房产互换如何交税费
  • 找社保代理公司需要提供什么资料
  • 小微企业有什么优惠政策
  • 应交税金期末为负数
  • 商品进销差价会计科目流程图模板
  • 未开票收入如何计提增值税
  • 新政府会计固定资产的核算与计量
  • 公司给别人公司过账应该注意哪些
  • 研发支出全部资本化能不能评高企
  • 建筑公司需要什么人员
  • 公司利润太高了怎么办
  • 民办非企业没有了吗
  • 残保金零申报必须大于0
  • 租金收入分摊政策规定
  • windows mysql1045
  • 微软数据收集
  • freebsd 安装
  • thinkpad 8高配版
  • win1020h2累积更新
  • 微信小程序wx.request实现后台数据交互功能分析
  • 字符串中指定字符变换
  • unity多人游戏
  • javascript的主要内容
  • python lambda的用法
  • python数据分析入门教程
  • 如何将位置信息生成二维码
  • 堆栈模式都是什么意思
  • js混杂模式
  • 小汽车都交消费税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设