ref绑定dom的三种写法

简介: ref绑定dom的三种写法

1、字符串形式


这种字符出串写法因为效率不好,所以不推荐使用


语法

标签上使用ref="name" 进行绑定

方法中this.refs.name拿到dom

<input ref="input1" type="text" placeholder="点击按钮弹出内容" />
<button onClick={ this.showData }>按钮</button>
showData = () => {
  const { input1 } = this.refs
  alert(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 } = this
  alert(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)
 }


相关文章
|
4天前
|
JavaScript vr&ar
vue3通过ref获取dom元素并修改样式
vue3通过ref获取dom元素并修改样式
142 0
|
4天前
|
JavaScript 前端开发
在 Vue 中,如何使用`ref`和`$refs`来监听DOM元素的变化?
在 Vue 中,如何使用`ref`和`$refs`来监听DOM元素的变化?
108 0
|
4天前
|
JavaScript
在Vue中,如何使用`v-bind`指令将属性绑定到DOM元素上?
在Vue中,如何使用`v-bind`指令将属性绑定到DOM元素上?
42 3
|
12月前
|
JavaScript 前端开发
前端学习笔记202304学习笔记第十五天-vue3.0-使用ref获取dom元素
前端学习笔记202304学习笔记第十五天-vue3.0-使用ref获取dom元素
36 0
|
JavaScript
Vue3——04通过ref操作Dom元素,hooks的使用方法
通过ref操作Dom元素,hooks的使用方法
213 0
Vue3——04通过ref操作Dom元素,hooks的使用方法
|
缓存 JavaScript 算法
【Vue五分钟】 五分钟了解Vue绑定、虚拟DOM、侦听器和声明周期
在我们的vue里面,双向绑定和单向绑定是不冲突
【Vue五分钟】 五分钟了解Vue绑定、虚拟DOM、侦听器和声明周期
|
JavaScript API
Vue3如何通过ref获取真实DOM元素
Vue3如何通过ref获取真实DOM元素
Vue3如何通过ref获取真实DOM元素
|
JavaScript 前端开发 数据格式
react实战笔记45:Dom对象和ref对象
react实战笔记45:Dom对象和ref对象
80 0
react实战笔记45:Dom对象和ref对象
|
JavaScript 开发者
使用 ref 获取 DOM 元素和组件引用|学习笔记
快速学习使用 ref 获取 DOM 元素和组件引用
108 0
使用 ref 获取 DOM 元素和组件引用|学习笔记
|
JavaScript 前端开发 API
【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法
【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法
270 0
【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法