ref的作用

原始对 DOM 的操作,应用的是通过ID与getElementById办法来操作,如下:

<script setup>function uu(){console.log( document.getElementById('itemR'))}//借助getElementById办法及ID操作DOM</script><template> <button v-on:click="uu"></button>    <li  id="itemR">     我来试试    </li> </template>

ref不须要用到 getElementById 间接应用ref名即可对 DOM 进行操作,如下:

import {ref} from 'vue'const itemR=ref()function uu(){console.log(itemR.value)}//间接应用ref名操作DOM</script><template> <button v-on:click="uu"></button>    <li  ref="itemR">     我来试试    </li></template>

ref的写法

模板部通过标签的ref属性给DOM赋标识符
<li ref="标识符">
选项式API通过$fefs对象来操作ref标识的DOM

this.$refs.标识符

组合式API不再应用$refs对象,而是间接应用标识符来操作,不过须要先用ref声名这个标识符。

const 标识符=ref()      标识符.value

留神此处的ref申明的响应变量不是一般的响应变量,而是DOM响应变量,他的值是DOM对象。

ref生命周期问题

ref属性是在DOM 渲染阶段生成,因而在渲染生成前应用ref会失去空的DOM,只有在渲染实现后能力应用ref操作DOM,如下ref将操作不了DOM:

<script setup>import {ref,reactive,onMounted,onBeforeMount} from 'vue'const itemR=ref()console.log(itemR.value)//打印不出<li>标签</script><template>     <li  ref="itemR">     我来试试    </li>  </template>

放在onMounted里,能力胜利操作DOM,如下:

<script setup>import {ref,reactive,onMounted,onBeforeMount} from 'vue'const itemR=ref()onMounted(()=>{console.log(itemR.value)})//胜利打印出<li>标签</script><template> <button v-on:click="uu"></button>    <li  ref="itemR">     我来试试    </li></template>

ref的标识名

字符型标识
数组型标识
变量型标识