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的三种写法相关推荐

  1. java c 事件对比_javacsript绑定事件的三种方式与各自特点

    javacsript绑定事件的三种方式与各自特点 javacsript绑定事件的三种方式与各自特点 点击打开链接 javacsript绑定事件的三种方式与各自特点 feipeng8848 2017-0 ...

  2. React绑定this的三种方式

    转载自  React绑定this的三种方式 React可以使用React.createClass.ES6 classes.纯函数3种方式构建组件.使用React.createClass会自动绑定每个方 ...

  3. CSS伪类的三种写法

    今天逛蓝色时,无意发现了有人讨论伪类的正确写法,让我对伪类的认识也更清晰了,转贴于此,以备日后查询(原贴当时没记下地址,已经记不得了) Code <style> a.tb{text-dec ...

  4. Promise的链式调用三种写法,Promise.all与式调用

    Promise的链式调用三种写法: // 1,Promise原始链式调用 new Promise((resolve, reject) => {setTimeout(() => {conso ...

  5. android 闪屏页处理_Android应用闪屏页延迟跳转的三种写法

    闪屏页也称之为欢迎页.在打开一个App时,我们第一眼看到的往往是一个闪屏页面,之所以叫闪屏页,是因为它出现之后会短暂地停留几秒钟再跳转到其他页面.闪屏页除了使用户体验更好外,还能给app留出初始化数据 ...

  6. vue2.0模板的三种写法

    vue2.0中的模板有三种写法,根据不同的需求运用不同的方法来实现 1. <!DOCTYPE html> <html lang="en"> <head ...

  7. JavaScript的三种写法

    1.2-JavaScript的三种写法 1-复习CSS代码的三种写法 1.外联样式:写在css文件中,使用link导入 <link rel="stylesheet" href ...

  8. SpringMVC框架|Handler处理器的三种写法

    文章目录 一.SpringMVC中的处理器 1.SpringMVC开发方式 2.Servlet原生开发方式 3.开发中常用的方式 一.SpringMVC中的处理器 配置完SpringMVC的处理器映射 ...

  9. JS面向对象的三种写法

    欢迎来我的博客交流 /*面向对象的三种写法 *1.构造函数 *2.class类 * 2.直接操作对象 * */ /**/function myShow(name){this.name = name;t ...

最新文章

  1. django-admin 设计User外键,设计model
  2. Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil
  3. asp.net 发送邮件函数两则
  4. nfs挂载hdfs,实现云存储
  5. 未来人工智能应用体现出的核心技术有哪些?
  6. uandroidtool使用教程_apktool反编译详细使用教程_图文教程
  7. windows驱动开发技术详解 VC6与DDK搭配使用的设置
  8. 2021年Delphi第26届应用软件开发展示挑战赛的获胜者名单
  9. c语言如何命名开根号函数,c++开根号函数?
  10. Dell服务器误删阵列恢复操作
  11. 疫情下,裁员补偿标准不可不知
  12. 【无机纳米材料科研制图——Photoshop 0404】PS排列扫描透射电子显微镜图TEM/STEM
  13. Jinja2安装与基本API用法
  14. 颜色恒常知觉的计算理论——Retinex理论
  15. 论文中公式后标点的使用
  16. Apollo学习笔记
  17. 基于51单片机的水族箱温度水质监测智能宠物金鱼喂食器补氧换水proteus仿真原理图
  18. DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
  19. SpringBoot集成 Windows2012 AD 认证服务
  20. 微型光学防抖摄像头模组的自动化生产调试技术

热门文章

  1. redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列
  2. 海底光缆——你不知道的秘密!
  3. 42岁!他成为2019年最年轻中科院院士!一篇论文未发博士毕业
  4. 揭秘5位爬藤“牛娃” 他们吸引藤校的到底是什么?
  5. 新知|你知道生气有多可怕吗?“气死人”是有科学依据的
  6. B站UP主都在关注的微信公众号
  7. ACM训练总结(大二)
  8. C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
  9. 勤学如春起之苗,不见其增,日有所长!
  10. 【产品干货】经典营销模型的产品化介绍