React 事件处理 ( this问题 参数传递 ref)

React事件的命名采用小驼峰方式(cameCase),而不是小写
使用JSX语法时你需要传入一个函数作为事件处理函数,而不是一个字符串
你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault

在这里插入图片描述

1 this

需要谨慎对待JSX回调函数中的this可以使用:
● 公共属性(剪头函数)
● 匿名函数
● bind进行绑定
在这里插入图片描述

2 向事件处理程序传递参数

在这里插入图片描述

3 Ref

● Refs提供了一种方式,允许我们访问DOM节点或在render方法中创建React元素
● 在React渲染生命周期时,表单元素上的value 将会覆盖DOM节点中的值,在非受控组件中,你经常希望React赋予组件一个初始值,但是不去控制后续的更新,在这种情况下,你可以指定一个defaultValue属性,而不是value

3.1 为DOM元素添加ref

可以使用ref去 存储DOM节点的引用 当ref属性用于HTML元素时,构造函数中使用React.createRef()创建的ref接收底层DOM元素作为其current属性

import React from './react';
import ReactDOM from './react-dom';
class Sum extends React.Component{numberAnumberBresultconstructor(props){super(props);this.numberA = React.createRef();//{current:null}this.numberB = React.createRef();this.result = React.createRef();}handleClick = (event)=>{let numberA = this.numberA.current.value;let numberB = this.numberB.current.value;this.result.current.value = parseFloat(numberA)+parseFloat(numberB);}render(){return (<><input ref={this.numberA}/><input ref={this.numberB}/><button onClick={this.handleClick}>+</button><input ref={this.result}/></>)}
}
ReactDOM.render(<Sum/>,document.getElementById('root'));

3.2 为class 组件添加ref

import React from './react';
import ReactDOM from './react-dom';
class TextInput extends React.Component{constructor(props){super(props);this.inputRef = React.createRef();}getTextInputFocus = ()=>{this.inputRef.current.focus();}render(){return <input ref={this.inputRef}/>}
}
class Form extends React.Component{constructor(props){super(props);this.textInputRef = React.createRef();}getFormFocus = ()=>{//this.textInputRef.current就会指向TextInput类组件的实例this.textInputRef.current.getTextInputFocus();}render(){return (<><TextInput ref={this.textInputRef}/><button onClick={this.getFormFocus}>获得焦点</button></>)}
}ReactDOM.render(<Form/>,document.getElementById('root'));

3.3 ref转发

● 不能在函数组件上使用ref 属性,因为他们没有实例
● ref转发是一项将ref自动的通过组件传递到其一子组件的技巧
● ref转发允许某些组件接收ref,并将其向下传递,(转发它给其他组件)

import React from './react';
import ReactDOM from './react-dom';
function TextInput(props,ref){return <input ref={ref}/>
}
const ForwardedTextInput = React.forwardRef(TextInput);
class Form extends React.Component{constructor(props){super(props);this.textInputRef = React.createRef();}getFormFocus = ()=>{//this.textInputRef.current就会指向TextInput类组件的实例this.textInputRef.current.focus();}render(){return (<><ForwardedTextInput ref={this.textInputRef}/><button onClick={this.getFormFocus}>获得焦点</button></>)}
}ReactDOM.render(<Form/>,document.getElementById('root'));
/**
Warning: 
Function components cannot be given refs. 
Attempts to access this ref will fail.Did you mean to use React.forwardRef()?
不能给函数组件添加ref* * */

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Flink双流(join)

一、介绍 Join大体分类只有两种&#xff1a;Window Join和Interval Join Window Join有可以根据Window的类型细分出3种&#xff1a;Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 &#x1f338;Window 类型的join都是利用window的机制…

ETL快速拉取物流信息

我国作为世界第一的物流大国&#xff0c;但是在目前的物流信息系统还存在着几大的痛点。主要包括以下几个方面&#xff1a; 数据孤岛&#xff1a;有些物流企业各个部门之间的数据标准不一致&#xff0c;难以实现数据共享和协同&#xff0c;容易导致信息孤岛。 操作繁琐&#x…

如何在 CentOS 上安装 ONLYOFFICE 文档 8.0

使用社区版&#xff0c;您可以在本地服务器上安装 ONLYOFFICE 文档&#xff0c;并将在线编辑器与 ONLYOFFICE 协作平台或其他热门系统集成在一起。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器&#xff0c;支持处理文本文档、电子表格、演示文稿、可填写…

django自定义后端过滤

​ DRF自带的过滤 第一个 DjangoFilterBackend 是需要安装三方库见[搜索&#xff1a;多字段筛选]两外两个是安装注册了rest_framework就有。 如上图&#xff0c;只要配置了三个箭头所指的方向&#xff0c;就能使用。 第一个单字段过滤 用户视图集中加上filterset_fields …

Edting While Playing 瓦片地图编辑器开发整合导入自定义贴图 DEVC++ VS2022都可复制粘贴运行

接 多种类型图片模块读取-CSDN博客 与 Editing While Playing 使用 Easyx 开发的 RPG 地图编辑器 tilemap eaitor-CSDN博客 整合实现平面贴图纹理自定义 操作同上 导入步骤&#xff1a; 先运行程序&#xff0c;然后关闭&#xff0c;同目录下有四个文件夹&#xff0c; 把…

高维数据的中介效应【中介分析】《R包:HIMA》

允许基于高级中介筛选和惩罚回归技术来估计和测试高维中介效应 Hima包浏览 高维中介示意图 图1. 在暴露和结果之间有高维中介的情况 本包的作用 在确定独立筛选和极小极大凹惩罚技术的基础上&#xff0c;采用联合显著性检验方法对调解效果进行检验。使用蒙特卡罗模拟研究来展…

LabVIEW多通道压力传感器实时动态检测

LabVIEW多通道压力传感器实时动态检测 介绍了一种基于LabVIEW的多通道压力传感器实时动态检测系统&#xff0c;解决压阻式压力传感器温度补偿过程的复杂度&#xff0c;提高测量的准确性。通过自动轮询检测方法&#xff0c;结合硬件检测模型和多通道检测系统设计&#xff0c;本…

Netty-核心组件

核心组件 1.Bootstrap和ServerBootstrap2.Future和ChannelFuture3.Channel4.Selector5.NioEventLoop6.NioEventLoopGroup7.ByteBuf8.ChannelHandler9.ChannelHandlerContext10.ChannelPipeline 1.Bootstrap和ServerBootstrap Bootstrap是Netty的启动程序&#xff0c;⼀个Netty…

Redis之缓存穿透问题解决方案实践SpringBoot3+Docker

文章目录 一、介绍二、方案介绍三、Redis Docker部署四、SpringBoot3 Base代码1. 依赖配置2. 基本代码 五、缓存优化代码1. 校验机制2. 布隆过滤器3. 逻辑优化 一、介绍 当一种请求&#xff0c;总是能越过缓存&#xff0c;调用数据库&#xff0c;就是缓存穿透。 比如当请求一…

【开源】JAVA+Vue.js实现超市账单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

Linux-目录I/O-004

学习重点&#xff1a; 1.目录I/O的函数接口 2.目录的遍历&#xff0c;目录的递归遍历1.【mkdir】 1.1函数原型 【int mkdir(const char *pathname, mode_t mode);】1.2函数功能 创建目录文件1.3函数参数 1.3.1【pathname】 文件路径1.3.2【mode】 文件的权限1.4返回值 …

6.BFC

BFC 经典真题 介绍下 BFC 及其应用介绍下 BFC、IFC、GFC 和 FFC 搞懂各种 FC 一看到 BFC、IFC、GFC 和 FFC&#xff0c;大家可能会想到 KFC。 然而这里所说的 xFC 和 KFC 没有任何关系。 那么这些 FC 究竟是啥呢&#xff1f; 不着急&#xff0c;我们先搞懂一个&#xff0…

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台&#xff0c;具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器&#xff0c;包括4个Cortex A73和4个Coretex A53&#xff0c;主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

LLM之RAG实战(二十七)| 如何评估RAG系统

有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的&#xff1f;这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG&#xff08;Retrieval Augmented Generation&#xff09;想象成人工智能世界里聪明的书呆子&#xff0c;它会挖掘大量信息&#xff0c;准确地找到…

小马识途分享抖音百科创建的步骤

在玩抖音的时候&#xff0c;不知道注意到抖音的搜索结果没有&#xff0c;有时候会去搜索框搜索一个品牌或人物名称&#xff0c;搜索框下面翻几下大概率就会出现百科词条&#xff0c;这个词条就是抖音百科。抖音的百科属于头条百科&#xff0c;因为这两个平台都属于字节跳动旗下…

浅谈WPF之利用RichTextBox实现富文本编辑器

在实际应用中&#xff0c;富文本随处可见&#xff0c;如留言板&#xff0c;聊天软件&#xff0c;文档编辑&#xff0c;特定格式内容等&#xff0c;在WPF开发中&#xff0c;如何实现富文本编辑呢&#xff1f;本文以一个简单的小例子&#xff0c;简述如何通过RichTextBox实现富文…

iphone6无法加载图片资源文件

在开发项目时,需要动态的展示图片 这样写之后&#xff0c;所有的机型全部能够正常展示&#xff0c;除了ipone6。查找一番原因之后发现&#xff0c;我的图片资源都是webp格式的图像资源&#xff0c;ipone6无法解析该资源为图像资源&#xff0c;所以无法加载。 解决方法&#x…

06.栈习题

1353&#xff1a;表达式括号匹配(stack) 算法思想&#xff1a; 1.用string存储字符串&#xff0c;遍历字符串 2.遇到左括号就入栈 3.遇到右括号就匹配出栈&#xff0c;但是再出栈之前要判断栈是否为空 a.如果栈为空&#xff0c;说明没有与右括号匹配的左括号&#xff0c;右括号…

基于springboot+vue的知识管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…