ref绑定dom的三种写法
1、字符串形式
这种字符出串写法因为效率不好,所以不推荐使用
语法
标签上使用ref="name"
进行绑定
方法中this.refs.name
拿到dom
<input ref="input1" type="text" placeholder="点击按钮弹出内容" />
<button onClick={ this.showData }>按钮</button>
showData = () => {const { input1 } = this.refsalert(input1.value)
}
2、回调的形式
ref会自动执行回调函数,并注入一个参数currentNode(当前节点)
更新组件时,refs会执行两次,第一次传null,第二次传入参数dom元素(并不会影响正常开发)
原因是每次渲染时都会定义一个新的函数实例,所以React清空旧的ref并且设置新的。
通过将ref的回调函数定义成class的绑定函数方式可以避免这个问题
语法
标签上使用ref={c=>this.name=c}
方法中this.name
拿到dom
//正常写法
<input ref={c => this.input1 = c } type="text" placeholder="点击按钮弹出内容" />
<button onClick={ this.showData }>按钮</button>
showData = () => {const { input1 } = thisalert(input1.value)
}
//解决执行两次的问题
<input ref={this.demo} type="text" placeholder="class绑定的函数" />
demo=(c)=> {console.log(c,'123123')
}
3、使用React.createRef
React.createRef调用后返回一个容器,该容器可以存储被ref所标识的节点,该容器只能给单个使用,重复的容器,会被覆盖
语法
标签上使用ref={this.name}
给实例添加属性input = React.createRef();
<input ref={this.input} type="text" placeholder="点击按钮弹出内容" /><button onClick={ this.showData }>按钮</button>showData = () => {alert(this.input.current.value)}
ref绑定dom的三种写法相关推荐
- java c 事件对比_javacsript绑定事件的三种方式与各自特点
javacsript绑定事件的三种方式与各自特点 javacsript绑定事件的三种方式与各自特点 点击打开链接 javacsript绑定事件的三种方式与各自特点 feipeng8848 2017-0 ...
- React绑定this的三种方式
转载自 React绑定this的三种方式 React可以使用React.createClass.ES6 classes.纯函数3种方式构建组件.使用React.createClass会自动绑定每个方 ...
- CSS伪类的三种写法
今天逛蓝色时,无意发现了有人讨论伪类的正确写法,让我对伪类的认识也更清晰了,转贴于此,以备日后查询(原贴当时没记下地址,已经记不得了) Code <style> a.tb{text-dec ...
- Promise的链式调用三种写法,Promise.all与式调用
Promise的链式调用三种写法: // 1,Promise原始链式调用 new Promise((resolve, reject) => {setTimeout(() => {conso ...
- android 闪屏页处理_Android应用闪屏页延迟跳转的三种写法
闪屏页也称之为欢迎页.在打开一个App时,我们第一眼看到的往往是一个闪屏页面,之所以叫闪屏页,是因为它出现之后会短暂地停留几秒钟再跳转到其他页面.闪屏页除了使用户体验更好外,还能给app留出初始化数据 ...
- vue2.0模板的三种写法
vue2.0中的模板有三种写法,根据不同的需求运用不同的方法来实现 1. <!DOCTYPE html> <html lang="en"> <head ...
- JavaScript的三种写法
1.2-JavaScript的三种写法 1-复习CSS代码的三种写法 1.外联样式:写在css文件中,使用link导入 <link rel="stylesheet" href ...
- SpringMVC框架|Handler处理器的三种写法
文章目录 一.SpringMVC中的处理器 1.SpringMVC开发方式 2.Servlet原生开发方式 3.开发中常用的方式 一.SpringMVC中的处理器 配置完SpringMVC的处理器映射 ...
- JS面向对象的三种写法
欢迎来我的博客交流 /*面向对象的三种写法 *1.构造函数 *2.class类 * 2.直接操作对象 * */ /**/function myShow(name){this.name = name;t ...
最新文章
- django-admin 设计User外键,设计model
- Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil
- asp.net 发送邮件函数两则
- nfs挂载hdfs,实现云存储
- 未来人工智能应用体现出的核心技术有哪些?
- uandroidtool使用教程_apktool反编译详细使用教程_图文教程
- windows驱动开发技术详解 VC6与DDK搭配使用的设置
- 2021年Delphi第26届应用软件开发展示挑战赛的获胜者名单
- c语言如何命名开根号函数,c++开根号函数?
- Dell服务器误删阵列恢复操作
- 疫情下,裁员补偿标准不可不知
- 【无机纳米材料科研制图——Photoshop 0404】PS排列扫描透射电子显微镜图TEM/STEM
- Jinja2安装与基本API用法
- 颜色恒常知觉的计算理论——Retinex理论
- 论文中公式后标点的使用
- Apollo学习笔记
- 基于51单片机的水族箱温度水质监测智能宠物金鱼喂食器补氧换水proteus仿真原理图
- DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
- SpringBoot集成 Windows2012 AD 认证服务
- 微型光学防抖摄像头模组的自动化生产调试技术
热门文章
- redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列
- 海底光缆——你不知道的秘密!
- 42岁!他成为2019年最年轻中科院院士!一篇论文未发博士毕业
- 揭秘5位爬藤“牛娃” 他们吸引藤校的到底是什么?
- 新知|你知道生气有多可怕吗?“气死人”是有科学依据的
- B站UP主都在关注的微信公众号
- ACM训练总结(大二)
- C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
- 勤学如春起之苗,不见其增,日有所长!
- 【产品干货】经典营销模型的产品化介绍