vue3中使用ref獲取dom的操作代碼
前言
本期文章我將給大家?guī)?lái)的是vue3中用ref獲取dom的操作,ref在我們開(kāi)發(fā)項(xiàng)目當(dāng)中很重要的,在 Vue 中使用 ref
可以提高代碼的可讀性和維護(hù)性,因?yàn)樗苯訕?biāo)識(shí)出了組件中需要操作的具體元素或組件實(shí)例。這使得團(tuán)隊(duì)合作、代碼審查和后續(xù)功能更新更加高效。總結(jié)來(lái)說(shuō),ref
在 Vue 中是一個(gè)非常有用的工具,不僅使得操作 DOM 更加方便和直觀,還能夠提升組件間通信的靈活性和效率。正確使用 ref
可以幫助開(kāi)發(fā)者更好地管理和操作 DOM 元素以及組件實(shí)例,從而實(shí)現(xiàn)復(fù)雜的前端交互和 UI 動(dòng)效。接下來(lái)我就一一道來(lái)吧
通過(guò)ref直接拿到dom引用
<template> <div class="demo1-container"> <div ref="sectionRef" class="ref-section">1111111</div> </div> </template> <script setup lang="ts"> import {onMounted, ref} from 'vue' const sectionRef = ref(null) onMounted(() => { console.log(sectionRef.value) }) </script>
在這里我們要注意的是當(dāng)在div標(biāo)簽中用 ref="sectionRef"
,之后在聲明響應(yīng)式變量的時(shí)候,要用sectionRef
命名,這個(gè)是一定要的,然后我們通過(guò) sectionRef.value 的形式即可獲取該div元素。 讓我們看看結(jié)果吧
單一dom元素或者個(gè)數(shù)較少的場(chǎng)景
通過(guò)父容器的ref遍歷拿到dom引用
<template> <div class="demo2-container"> <div ref="listRef" class="list-section"> <div @click="higherAction(index)" class="list-item" v-for="(item, index) in state.list" :key="index"> <span>{{item}}</span> </div> </div> </div> </template> <script setup lang="ts"> import { ref, reactive, onMounted } from 'vue' const listRef = ref() const state = reactive({ list: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] }) onMounted(()=>{ console.log(listRef.value) }) </script> <style scoped> .demo2-container { width: 200px; height: 400px; border: 1px solid #000; overflow: auto; } </style>
通過(guò)對(duì)父元素添加了ref屬性,并聲明了一個(gè)與ref屬性名稱相同的變量listRef,此時(shí)通過(guò)listRef.value會(huì)獲得包含子元素的dom對(duì)象,然后我們就可以此時(shí)通過(guò)listRef.value.children[index]
的形式獲取子元素dom
通過(guò):ref將dom引用放到數(shù)組中
<template> <div class="demo2-container"> <div class="list-section"> <div :ref="setRefAction" @click="higherAction(index)" class="list-item" v-for="(item, index) in state.list" :key="index"> <span>{{item}}</span> </div> </div> </div> </template> <script setup lang="ts"> import { onMounted, reactive ,ref} from 'vue' const state = reactive({ list: [1, 2, 3, 4, 5, 6, 7], refList: [] }) const index = ref(null) const setRefAction = (el: any) => { state.refList.push(el); } const higherAction = (index) => { console.log(state.refList[index]) } onMounted( () => { console.log(state.refList); setRefAction(index) }) </script> <style scoped> .demo2-container { width: 200px; height: 400px; border: 1px solid #000; overflow: auto; } .list-item { background-color: pink; border: 1px solid #000; } </style>
這種情況下,我們可以通過(guò)動(dòng)態(tài)設(shè)置ref的形式進(jìn)行設(shè)置ref,這樣我們就可以獲取到一個(gè)ref的數(shù)組,結(jié)果如下
當(dāng)我們點(diǎn)擊哪個(gè)就會(huì)獲取哪個(gè)的dom,這樣我們簡(jiǎn)單多了
到此這篇關(guān)于vue3中使用ref獲取dom的操作代碼的文章就介紹到這了,更多相關(guān)vue3 ref獲取dom內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用element+vuedraggable實(shí)現(xiàn)圖片上傳拖拽排序
這篇文章主要為大家詳細(xì)介紹了使用element+vuedraggable實(shí)現(xiàn)圖片上傳拖拽排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Vue3項(xiàng)目打包后部署到服務(wù)器 請(qǐng)求不到后臺(tái)接口解決方法
在本篇文章里小編給大家整理了關(guān)于Vue3項(xiàng)目打包后部署到服務(wù)器 請(qǐng)求不到后臺(tái)接口解決方法,有需要的朋友們可以參考下。2020-02-02vue渲染時(shí)閃爍{{}}的問(wèn)題及解決方法
v-if和v-show可能是日常開(kāi)發(fā)中最常用的兩個(gè)指令,雖然看上去兩者功能是類似的,但是兩者還是存在很大區(qū)別的。接下來(lái)通過(guò)本文給大家分享vue渲染時(shí)閃爍{{}}的問(wèn)題及解決方法,感興趣的朋友一起看看吧2018-03-03詳解vue中的父子傳值雙向綁定及數(shù)據(jù)更新問(wèn)題
這篇文章主要介紹了vue中的父子傳值雙向綁定及數(shù)據(jù)更新問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06詳解如何解決vue開(kāi)發(fā)請(qǐng)求數(shù)據(jù)跨域的問(wèn)題(基于瀏覽器的配置解決)
這篇文章主要介紹了詳解如何解決vue開(kāi)發(fā)請(qǐng)求數(shù)據(jù)跨域的問(wèn)題(基于瀏覽器的配置解決),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11vue jsx 使用指南及vue.js 使用jsx語(yǔ)法的方法
這篇文章主要介紹了vue jsx 使用指南及vue.js 使用jsx語(yǔ)法的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11vue-echarts如何實(shí)現(xiàn)圖表組件封裝詳解
由于在項(xiàng)目中需要對(duì)數(shù)據(jù)進(jìn)行可視化處理,也就是用圖表展示,所以下面這篇文章主要給大家介紹了關(guān)于vue-echarts如何實(shí)現(xiàn)圖表組件封裝的相關(guān)資料,需要的朋友可以參考下2022-05-05vue 音樂(lè)App QQ音樂(lè)搜索列表最新接口跨域設(shè)置方法
這篇文章主要介紹了vue 音樂(lè)App QQ音樂(lè)搜索列表最新接口跨域設(shè)置方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09