React—09—ref操作原生dom和组件;

news/2025/2/28 19:26:04/文章来源:https://www.cnblogs.com/EricShen/p/18743838

一、操作原生dom

三种方式

import React, { PureComponent, createRef } from 'react';// 编写一个组件
class App extends PureComponent {constructor() {super();this.state = {};this.titleRef2 = createRef();this.titleRef3 = createRef();}handleConsole = par => {// 方式一console.log(this.refs.m1);// 方式二console.log(this.titleRef2.current);// 方式三console.log(this.titleRef3.current);};render() {return (<div><h1 ref="m1">方式一</h1><h1 ref={this.titleRef2}>方式二</h1><h1 ref={e => (this.titleRef3.current = e)}>方式三</h1><button onClick={e => this.handleConsole()}>点击</button></div>
    );}
}export default App;

 

二、操作组件

 1.类组件

和获取原生dom的方式二一样,先通过createRef()得到一个变量,然后绑定上去即可。

2.函数组件

也要先通过createRef()得到一个变量,但是子组件函数要用forwardRef包裹起来。然后把ref放到函数返回的元素的上面。

 

import React, { PureComponent, createRef ,forwardRef } from 'react';const Footer = forwardRef((props,ref)=>{return <h3 ref={ref}>Footer child component</h3> 
})class Body extends PureComponent {test(){console.log(111);}render() {return <h3>body child component</h3> 
  }
}// 编写一个组件
class App extends PureComponent {constructor() {super();this.state = {};this.titleRef = createRef();this.titleRef2 = createRef();}handleConsole = par => {// 获取类组件的ref实例console.log(this.titleRef.current);this.titleRef.current.test(); // 调用类组件的方法// 方式二console.log(this.titleRef2.current);};render() {return (<div><Body ref={this.titleRef}></Body><Footer ref={this.titleRef2}></Footer><button onClick={e => this.handleConsole()}>点击</button></div>
    );}
}export default App;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CS144 Lab2

CS144 Lab2 开始有点痛苦了,因为文档给的并不全面,光读文档是没法覆盖所有的test case的,有太多的业务逻辑要自己考虑。接下来分别就几个难点总结一下: SYN/FIN 有几种情况要特判:当前没收到过SYN,要拒绝所有的segment 当前收到过SYN了,又收到了新的SYN,这得拒绝 当前收…

msyql三表命令

一、建表 create table student( stu_no int, stu_name varchar(10), sex char(1), age int(3), edit varchar(20) ) DEFAULT charset=utf8; insert into student values (1,wang,男,21,hello), (2,小明,女,22,haha2), (3,hu,女,23,haha3), (4,li,男,25,haha4); create table …

活动报名:Voice Agent 技术现状及应用展望丨 3.8 北京

「人人发言,所有人向所有人学习!」——Z 沙龙「一起探索下一代语音驱动的人机交互界面。」——RTE 开发者社区3 月 8 日周六下午,北京,「智谱 Z 计划&Z Fund」和「RTE 开发者社区」将合办一场 Voice Agent 主题的线下活动。多家语音模型的技术负责人,多个落地场景(AI…

Advance Installer Appium环境配置

安装参数文件同步环境变量 Path = [python_Dir];[NodeJS_Dir];[AndroidSDK_Dir];[redis_Dir]

2月solar月赛wp

2025年Solar应急响应公益月赛-2月暗链排查-1 网站被劫持,被跳转到外部网站,请分析外部原因。本题提供两个端口:第一个端口为ssh端口默认密码为solar@202502第二个端口为被劫持的web服务,路径为 /projectA/index.jsp做的时候,跳转到/projectA/home有一串js代码 拿出里面那串…

谷歌地图案例 | 为服务不足的银行客户提供优质服务

谷歌地图占全球导航市场67%,重塑空间运行。Current银行用谷歌地图平台提供精确定位,为“银行服务不足”群体改善财务状况,商家和客户均受益。据Statista最新数据显示,谷歌地图以67%的全球导航市场份额构建起数字时代的基础设施霸权。这项始于2005年的地理信息服务,已完成从…

解决在Ubuntu中用conda配置环境和下载依赖缓慢问题(重点:mamba)

前情:背景:在重现text2cad文章的过程中,通过environment.yml下载环境和依赖(包括pythonocc-core,pytorch等需要conda安装的包)开发环境:Ubuntu待下载的包: 官方environment.yml中要求的包及对应版本要求(之后会根据我的cuda驱动版本等其他问题,对包的版本进行调整):de…

又一款免费的资产设备管理软件 - WGFIX

WGFIX是wgcloud团队最近发布的一个资产管理系统,免费开源,而且使用非常简单,部署也很方便,非常适合中小企业使用的一款IT资产设备管理系统 下载:www.wgstart.com WGFIX资产设备管理系统是私有化部署的B/S系统,只需要在本地搭建好WGFIX后,所有用户都通过浏览器来访问使用…

4D毫米波雷达

4D毫米波雷达平台产品MRR610 & SRR610是经纬恒润新设计推出的第六代毫米波雷达平台产品,平台选用业内高集成度的SoC解决方案,可为客户提供高性价比雷达单品和多雷达融合解决方案。 4D毫米波雷达平台产品MRR610 & SRR610是经纬恒润新设计推出的第六代毫米波雷达…

学习备忘-不删除32位Office安装AccessDataEngine 64位版本(共存)

一、Access database engine是什么Access database engine是微软官方推出的一款功能强大的数据库引擎可再发型程序包,主要用于access数据库调用引擎,方便office系统文件和office应用程序之间的数据传输。 二、Access Database EngineMicrosoft Access Database Engine 64位是…

AI程序员入场!揭秘直播吧研发效能大提升的秘密武器

直播吧自2007年成立以来,一直走在体育赛事直播与资讯服务领域的前沿。作为国内知名的体育赛事直播与资讯平台,直播吧始终以“让体育爱好者更便捷地获取赛事信息和观看直播”为使命,致力于通过其APP、网站等渠道,为用户提供全面的体育赛事直播、新闻资讯、数据分析等服务。服…

第一章 使用基于类的视图(class-based view)创建网页App

实践二 —— 使用基于类的视图(class-based view)创建网页App 1. 完成实践一的环境部署2. 进入虚拟环境pipenv shell3. 创建一个名为home的apppython manage.py startapp home此时文件目录如下:4. 将home添加到my_project/settings.py文件中INSTALLED_APPS = [django.contri…