vue3在setup中通过$ref获取dom元素
在使用vue2的时候,我们需要获取dom元素,或者获取组件的相关方法属性,一般都是通过this.$refs[domName]的方式,但是在vue3的setup中是没有this的,那么如何获取$refs呢?
借助 ref() 函数
首先在setup中定义一个ref的变量,然后将该变量挂载到DOM上。
<script setup>
import {ref,onMounted} from 'vue'
let divRef = ref(null);//refs
onMounted(() => {
console.log(divRef.value)
})
</script>
<template>
<div class="home">
<div ref="divRef">元素</div>
</div>
</template>ref将setup函数声明的变量变为响应式,包含且仅有一个value属性。
需要注意的是,调用divRef.value是需要在dom渲染后才能获取到,一般在回调的onMounted的方法中访问,在别的地方可以通过nextTick来实现访问,下面简单介绍下nextTick。
nextTick下调用$refs
nextTick将回调推迟到下一个DOM更新周期之后执行。在更改了一些数据以等待DOM更新后立即使用它。
<script setup>
import { ref, nextTick } from 'vue'
let divRef = ref(null);//refs
const init = async ()=> {
await nextTick()
console.log(divRef.value)
}
</script>本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!