最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Vue3中使用ref獲取元素節(jié)點(diǎn)

 更新時(shí)間:2022年07月27日 09:47:51   作者:??油箱上的蔥花?  
這篇文章主要介紹了一文詳解Vue3中使用ref獲取元素節(jié)點(diǎn),本文介紹在vue3的setup中使用composition?API獲取元素節(jié)點(diǎn)的幾種方法,需要的朋友可以參考一下

前言:

本文介紹在vue3setup中使用composition API獲取元素節(jié)點(diǎn)的幾種方法:

靜態(tài)綁定

僅僅需要申明一個(gè)ref的引用,用來(lái)保存元素,在template中,不必bind引用(:ref="domRef"),只需要聲明一個(gè)同名的ref屬性(ref="domRef")即可。

<script?setup>
import?{?ref,?onMounted?}?from?'vue'

//?聲明一個(gè)ref引用,來(lái)保存元素
const?domRef?=?ref(null)

onMounted(()?=>?{
??domRef.value.style.background?=?"red"
})
</script>

<template>
??<!--?這里只需要同名即可?-->
??<button?ref="domRef">dom</button>
</template>

需要注意的是,訪問(wèn)的時(shí)候,要確保ref引用值已經(jīng)成功綁定上元素,我們可以使用以下幾種方式確保獲取:

onMounted

onMounted(()?=>?{
??domRef.value.style.background?=?"red"
})

nextTick

nextTick(()?=>?{
??domRef.value.style.background?=?"red"
})

watchEffect

watchEffect(()?=>?{
???if?(domRef.value)?{
????????domRef.value.style.background?=?"red"
???}
})

watch

watch(domRef,?(val)?=>?{
????domRef.value.style.background?=?"red"
})

v-for中使用

在使用v-for進(jìn)行靜態(tài)綁定時(shí),僅需要注意以下兩點(diǎn):

  • 要與v-for在同級(jí)
  • ref是一個(gè)數(shù)組ref([])
<script?setup>
import?{?ref,?onMounted?}?from?'vue'

const?list?=?ref([
??/*?...?*/
])

const?itemRefs?=?ref([])

onMounted(()?=>?console.log(itemRefs.value))
</script>

<template>
??<ul>
????<li?v-for="item?in?list"?ref="itemRefs">
??????{{?item?}}
????</li>
??</ul>
</template>

但需要注意的是,itemRefs元素?cái)?shù)組并不保證與list數(shù)組為相同的順序。

動(dòng)態(tài)綁定

動(dòng)態(tài)綁定中,分為兩種方式,一種是通過(guò)將ref設(shè)置為函數(shù),第二種則是通過(guò)getCurrentInstance方法訪問(wèn)當(dāng)前組件實(shí)例上的$refs

ref設(shè)置函數(shù)

<template>
????<button?:ref="handleRef">動(dòng)態(tài)Ref</button>
</template>
<script?setup>
????import?{?shallowRef?}?from?'vue'
????
????const?btnRef?=?shallowRef(null)
????//?賦值動(dòng)態(tài)ref到變量
????const?handleRef?=?el?=>?{
????????if?(el)?{
????????????btnRef.value?=?el
????????}
????}
</script>

ref的函數(shù)回調(diào)中,我們能夠接受到元素返回值,再動(dòng)態(tài)設(shè)置到響應(yīng)式變量即可;

當(dāng)然,通過(guò)設(shè)置函數(shù)回調(diào)的方式,我們也能非常靈活的進(jìn)行進(jìn)一步的封裝。

<template>
????<ul>
????????<li?v-for="item?in?list"?:key="item.id"?:ref="(el)?=>?handleLiRef(el,?item)">
????????????<button>{{?item.id?}}</button>
????????</li>
????</ul>
</template>

<script?setup>
????import?{?ref?}?from?"vue"

????const?list?=?ref([{?id:?"111"?},?{?id:?"222"?},?{?id:?"333"?}])

????const?handleLiRef?=?(el,?item)?=>?{
????????console.log(el,?item)
????}
</script>

通過(guò)getCurrentInstance方法

<template>
????<ul>
????????<li?v-for="item?in?list"?:key="item.id"?:ref="item.id">
????????????<button>{{?item.id?}}</button>
????????</li>
????</ul>
</template>
<script?setup>
????import?{?getCurrentInstance,?onMounted,?ref?}?from?"vue"

????const?{?proxy?}?=?getCurrentInstance()

????const?list?=?ref([{?id:?"111"?},?{?id:?"222"?},?{?id:?"333"?}])
????onMounted(()?=>?{
????????console.log(proxy.$refs["111"])
????})
</script>

這種方式,與vue2this.$refs一般無(wú)二,只是我們用了getCurrentInstance函數(shù)在setup中獲取了當(dāng)前組件實(shí)例以替代this

獲取vue實(shí)例

需要注意的是,無(wú)論通過(guò)以上哪種方式獲取元素,如果元素為vue組件,則需要在子組件中使用defineExpose進(jìn)行暴露。

在父組件中,我們靜態(tài)綁定childRef

<template>
????<Test?ref="childRef"></Test>
</template>

<script?setup?lang="ts">
????import?Test?from?"./components/test.vue"
????import?{?onMounted,?ref?}?from?"vue"

????const?childRef?=?ref(null)
????onMounted(()?=>?{
????????console.log(childRef.value.btnRef)
????})
</script>

在子組件中,我們需要通過(guò)defineExpose函數(shù),手動(dòng)暴露出來(lái)ref引用值,該值指向了button元素。

<template>
????<button?ref="btnRef">子組件</button>
</template>
<script?setup>
????import?{?ref?}?from?"vue"
????const?btnRef?=?ref(null)
????defineExpose({
????????btnRef
????})
</script>

到此這篇關(guān)于一文詳解Vue3中使用ref獲取元素節(jié)點(diǎn)的文章就介紹到這了,更多相關(guān)Vue3 ref 獲取元素節(jié)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue+element-ui添加自定義右鍵菜單的方法示例

    Vue+element-ui添加自定義右鍵菜單的方法示例

    這篇文章主要給大家介紹了關(guān)于Vue+element-ui添加自定義右鍵菜單的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    這篇文章主要介紹了vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解Vue中數(shù)據(jù)可視化詞云展示與詞云的生成

    詳解Vue中數(shù)據(jù)可視化詞云展示與詞云的生成

    數(shù)據(jù)可視化是現(xiàn)代Web應(yīng)用程序中的一個(gè)重要組成部分,詞云是一種非常流行的數(shù)據(jù)可視化形式,可以用來(lái)展示文本數(shù)據(jù)中的主題和關(guān)鍵字,本文我們將介紹如何在Vue中使用詞云庫(kù)進(jìn)行數(shù)據(jù)可視化詞云展示和詞云生成,需要的可以參考一下
    2023-06-06
  • Vant主題定制如何修改顏色樣式

    Vant主題定制如何修改顏色樣式

    這篇文章主要介紹了Vant主題定制如何修改顏色樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue.js刪除動(dòng)態(tài)綁定的radio的指定項(xiàng)

    vue.js刪除動(dòng)態(tài)綁定的radio的指定項(xiàng)

    這篇文章主要介紹了vue.js刪除動(dòng)態(tài)綁定的radio的指定項(xiàng),需要的朋友可以參考下
    2017-06-06
  • el-form-item表單label添加提示圖標(biāo)的實(shí)現(xiàn)

    el-form-item表單label添加提示圖標(biāo)的實(shí)現(xiàn)

    本文主要介紹了el-form-item表單label添加提示圖標(biāo)的實(shí)現(xiàn),我們將了解El-Form-Item的基本概念和用法,及添加提示圖標(biāo)以及如何自定義圖標(biāo)樣式,感興趣的可以了解一下
    2023-11-11
  • ant?菜單組件報(bào)錯(cuò)Cannot?read?property?‘isRootMenu‘?of?undefined

    ant?菜單組件報(bào)錯(cuò)Cannot?read?property?‘isRootMenu‘?of?undefin

    這篇文章主要介紹了ant?菜單組件報(bào)錯(cuò)Cannot?read?property?‘isRootMenu‘?of?undefined解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue3 + ElementPlus動(dòng)態(tài)合并數(shù)據(jù)相同的單元格的完整代碼

    Vue3 + ElementPlus動(dòng)態(tài)合并數(shù)據(jù)相同的單元格的完整代碼

    文章介紹了如何使用ElementPlus的Table組件動(dòng)態(tài)合并單元格,適用于后臺(tái)數(shù)據(jù)返回格式動(dòng)態(tài)且沒(méi)有規(guī)律的場(chǎng)景,包括數(shù)據(jù)處理和按鈕操作,文章還附帶了效果圖和代碼詳解,希望能對(duì)大家有所幫助,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • vue實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    vue實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue前端實(shí)現(xiàn)截圖功能的簡(jiǎn)單步驟

    Vue前端實(shí)現(xiàn)截圖功能的簡(jiǎn)單步驟

    本文介紹了如何使用html2canvas庫(kù)來(lái)實(shí)現(xiàn)HTML頁(yè)面或某個(gè)元素的截圖功能,文中通過(guò)代碼介紹的非常詳細(xì),需要注意的是此方法只能在瀏覽器環(huán)境中使用,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

呼图壁县| 定结县| 龙南县| 镇康县| 衡南县| 武邑县| 原阳县| 高青县| 南投县| 河东区| 广德县| 襄樊市| 县级市| 蕉岭县| 随州市| 荣成市| 平湖市| 宁化县| 浠水县| 浙江省| 普兰店市| 鸡泽县| 宿州市| 芮城县| 宣武区| 科尔| 兰州市| 东莞市| 青冈县| 仁布县| 肇州县| 乐东| 临清市| 合水县| 溆浦县| 乌拉特前旗| 黄陵县| 伊川县| 榕江县| 开化县| 英吉沙县|