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)
 }


目录
打赏
0
0
0
0
0
分享
相关文章
|
11月前
|
vue3通过ref获取dom元素并修改样式
vue3通过ref获取dom元素并修改样式
772 0
|
7月前
|
Vue3基础(十wu)___ref获取原生dom元素
本文介绍了Vue3中使用`ref`来获取和操作原生DOM元素的方法,通过示例展示了如何通过`.value`改变元素的样式。
111 0
Vue3基础(十wu)___ref获取原生dom元素
|
9月前
|
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
react18【系列实用教程】useRef —— 创建 ref 对象,获取 DOM (2024最新版)
116 0
|
11月前
|
在Vue中,如何使用`v-bind`指令将属性绑定到DOM元素上?
在Vue中,如何使用`v-bind`指令将属性绑定到DOM元素上?
153 3
在 Vue 中,如何使用`ref`和`$refs`来监听DOM元素的变化?
在 Vue 中,如何使用`ref`和`$refs`来监听DOM元素的变化?
874 0
前端学习笔记202304学习笔记第十五天-vue3.0-使用ref获取dom元素
前端学习笔记202304学习笔记第十五天-vue3.0-使用ref获取dom元素
68 0