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

vue3 setup訪問(wèn)子組件的 DOM 元素的示例代碼

 更新時(shí)間:2023年08月29日 09:37:58   作者:ZerlinM  
使用setup的情況下這個(gè)時(shí)候我們無(wú)法使用this,注意在setup中setup是封閉的,不會(huì)將子組件事件暴露出來(lái),所以要用defineExpose(),這篇文章主要介紹了vue3 setup訪問(wèn)子組件的 DOM 元素,需要的朋友可以參考下

vue3 setup訪問(wèn)子組件的 DOM 元素

使用setup的情況下這個(gè)時(shí)候我們無(wú)法使用this,注意在setup中setup是封閉的,不會(huì)將子組件事件暴露出來(lái),所以要用defineExpose(),將需要在父組件調(diào)用的函數(shù)暴露出去,子組件代碼如下:

<template>
  <div ref="domRef">
    <div>哈哈哈哈</div>
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const domRef = ref(null)
const getRef = () => {
  return domRef.value
}
defineExpose({
  getRef
})
</script>

父組件:

<template>
  <PointPopup ref="popupRef" />
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import PointPopup from './components/PointPopup.vue'
const popupRef = ref(null)
onMounted(() => {
  // 打印子組件DOM
  console.log('child', popupRef?.value?.getRef())
})

這種方法通常不需要考慮異步渲染的問(wèn)題,是因?yàn)樵谧咏M件的 defineExpose 中,直接將 DOM 引用暴露給了父組件,而不需要等待異步操作完成。
通過(guò)使用 defineExpose 拋出 getDom 函數(shù),在父組件中訪問(wèn)子組件的 DOM 元素。在這種情況下,getDom 函數(shù)返回的是 inpRef.value,即子組件的 DOM 元素。
因?yàn)檫@個(gè)引用是直接通過(guò) ref 創(chuàng)建的,并在子組件的 defineExpose 中暴露給父組件,所以不需要考慮異步渲染的問(wèn)題。當(dāng)父組件的 mounted 鉤子函數(shù)執(zhí)行時(shí),子組件的 defineExpose 已經(jīng)完成,并且可以直接訪問(wèn)子組件的 DOM 元素。
所以,通過(guò)在子組件中拋出 DOM 的方式,可以直接在父組件中訪問(wèn)子組件的 DOM 元素,而不需要考慮異步渲染的延遲問(wèn)題。也就無(wú)需加nextTick()。

vue3訪問(wèn)子組件的 DOM 元素的方法總結(jié)

在 Vue 3 中,訪問(wèn)子組件的 DOM 元素是一個(gè)常見(jiàn)的需求。本文將介紹如何在 Vue 3 中使用不同的方法來(lái)獲取子組件的 DOM 元素。

方法一

使用refrefs:在父組件中,可以通過(guò) refrefs 來(lái)獲取子組件的 DOM 元素。在模板中使用 ref 聲明引用變量,并將其綁定到子組件的 ref 屬性上。然后,在父組件的鉤子函數(shù)(如 mounted)中,通過(guò) this.refs 訪問(wèn)子組件的引用,使用 .{refName} 來(lái)訪問(wèn)子組件實(shí)例的屬性和方法。通過(guò) .$el 可以獲取子組件的 DOM 元素。

方法二

< script setup> 中訪問(wèn)子組件的 DOM 元素:在 Vue 3 中,可以使用 < script setup> 區(qū)塊和 Composition API 的語(yǔ)法來(lái)編寫(xiě)組件邏輯。在父組件的 < script setup> 區(qū)塊中,可以使用 onMounted 鉤子函數(shù)來(lái)訪問(wèn)子組件的 DOM 元素。使用 ref 創(chuàng)建引用并綁定到子組件的 ref 屬性上,然后在 onMounted 鉤子函數(shù)中使用 childRef.value.$el 來(lái)訪問(wèn)子組件的 DOM 元素。

實(shí)例演示

image.png

image.png

但是會(huì)出現(xiàn)這種情況:對(duì)于父組件的 mounted 鉤子函數(shù),確實(shí)表示父組件的模板已經(jīng)被渲染成真實(shí)的 DOM。在大多數(shù)情況下,子組件也應(yīng)該在父組件的 mounted 鉤子函數(shù)執(zhí)行時(shí)已經(jīng)被渲染完成。然而,由于 Vue 的異步渲染策略,某些情況下子組件的 DOM 元素可能仍然未完全渲染。這種情況通常發(fā)生在以下情況下:

  • 子組件包含異步操作或延遲加載的內(nèi)容:如果子組件內(nèi)部包含異步操作,例如從服務(wù)器加載數(shù)據(jù)或執(zhí)行動(dòng)畫(huà)效果,子組件的 DOM 元素可能需要更長(zhǎng)的時(shí)間才能完全渲染。
  • 父組件與子組件之間存在過(guò)渡效果:如果在父組件中使用了過(guò)渡效果(例如 < transition> 或 < transition-group>),那么在父組件的 mounted 鉤子函數(shù)中訪問(wèn)子組件的 DOM 元素時(shí),可能會(huì)遇到過(guò)渡效果尚未完成的情況。

在這些情況下,盡管父組件的模板已經(jīng)被渲染成真實(shí)的 DOM,但子組件的 DOM 元素可能尚未完全渲染。因此,在父組件的 mounted 鉤子函數(shù)中立即訪問(wèn)子組件的 DOM 元素可能會(huì)導(dǎo)致獲取到不完整或錯(cuò)誤的信息。

1.使用 nextTick( ) 解決異步渲染問(wèn)題:在某些情況下,子組件的 DOM 元素可能尚未完全渲染,即使在父組件的 mounted 鉤子函數(shù)中。這是因?yàn)?Vue 的異步渲染策略。為了解決這個(gè)問(wèn)題,可以使用 nextTick() 函數(shù),在父組件的 mounted 鉤子函數(shù)中等待子組件的 DOM 元素渲染完成后再進(jìn)行操作。通過(guò) nextTick() 函數(shù)可以確保獲取到正確的子組件 DOM 元素。 方法三

使用setup的情況下這個(gè)時(shí)候我們無(wú)法使用this,注意在setup中setup是封閉的,不會(huì)將子組件事件暴露出來(lái),所以要用defineExpose(),將需要在父組件調(diào)用的函數(shù)暴露出去,子組件代碼如下:

image.png

父組件代碼如下:

image.png

這種方法通常不需要考慮異步渲染的問(wèn)題,是因?yàn)樵谧咏M件的 defineExpose 中,直接將 DOM 引用暴露給了父組件,而不需要等待異步操作完成。通過(guò)使用 defineExpose 拋出 getDom 函數(shù),在父組件中訪問(wèn)子組件的 DOM 元素。在這種情況下,getDom 函數(shù)返回的是 inpRef.value,即子組件的 DOM 元素。因?yàn)檫@個(gè)引用是直接通過(guò) ref 創(chuàng)建的,并在子組件的 defineExpose 中暴露給父組件,所以不需要考慮異步渲染的問(wèn)題。當(dāng)父組件的 mounted 鉤子函數(shù)執(zhí)行時(shí),子組件的 defineExpose 已經(jīng)完成,并且可以直接訪問(wèn)子組件的 DOM 元素。所以,通過(guò)在子組件中拋出 DOM 的方式,可以直接在父組件中訪問(wèn)子組件的 DOM 元素,而不需要考慮異步渲染的延遲問(wèn)題。也就無(wú)需加nextTick().

通過(guò)上述方法,可以在 Vue 3 中輕松地訪問(wèn)子組件的 DOM 元素。這對(duì)于執(zhí)行諸如測(cè)量元素大小、計(jì)算位置、添加樣式等操作非常有用。

到此這篇關(guān)于vue3 setup訪問(wèn)子組件的 DOM 元素的文章就介紹到這了,更多相關(guān)vue3 setup DOM 元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue使用pdf.js預(yù)覽pdf文件的方法

    vue使用pdf.js預(yù)覽pdf文件的方法

    在頁(yè)面進(jìn)行pdf預(yù)覽的時(shí)候,由于文件不能夠打印和下載很難滿足客戶的需求,接下來(lái)通過(guò)本文給大家介紹vue使用pdf.js來(lái)進(jìn)行pdf預(yù)覽,需要的朋友可以參考下
    2021-12-12
  • JavaScript獲取echart曲線上任意點(diǎn)位的值詳解

    JavaScript獲取echart曲線上任意點(diǎn)位的值詳解

    這篇文章主要為大家介紹了JavaScript獲取echart曲線上任意點(diǎn)位的值詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue列表單項(xiàng)展開(kāi)收縮功能之this.$refs的詳解

    vue列表單項(xiàng)展開(kāi)收縮功能之this.$refs的詳解

    這篇文章主要介紹了vue列表單項(xiàng)展開(kāi)收縮功能之this.$refs的詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能

    富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能

    這篇文章主要介紹了富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • vue3 useRoute無(wú)法獲取get參數(shù)的問(wèn)題解決

    vue3 useRoute無(wú)法獲取get參數(shù)的問(wèn)題解決

    本文主要介紹了vue3 useRoute無(wú)法獲取get參數(shù)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • Pinia 的 Setup Stores 語(yǔ)法使用實(shí)例詳解

    Pinia 的 Setup Stores 語(yǔ)法使用實(shí)例詳解

    這篇文章主要為大家介紹了Pinia 的 Setup Stores 語(yǔ)法使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)功能

    vue實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊(cè)權(quán)限的操作方法

    uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊(cè)權(quán)限的操作方法

    這篇文章主要介紹了uniapp組件uni-file-picker中設(shè)置使用照相機(jī)和相冊(cè)的權(quán)限,在uniapp中,我們通常會(huì)使用uni-file-picker這個(gè)組件,但是這個(gè)組件中,有點(diǎn)缺陷,就是沒(méi)有對(duì)這個(gè)功能的傳值設(shè)置,這里就要給組件進(jìn)行修改了,需要的朋友可以參考下
    2022-11-11
  • vue使用html2canvas和jspdf將html轉(zhuǎn)成pdf

    vue使用html2canvas和jspdf將html轉(zhuǎn)成pdf

    在前端開(kāi)發(fā)中, html轉(zhuǎn)pdf是最常見(jiàn)的需求,下面這篇文章主要給大家介紹了關(guān)于vue如何使用html2canvas和jspdf將html轉(zhuǎn)成pdf的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • vue實(shí)現(xiàn)樹(shù)形表格

    vue實(shí)現(xiàn)樹(shù)形表格

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)樹(shù)形表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

东港市| 凭祥市| 小金县| 乌拉特前旗| 合作市| 景德镇市| 通榆县| 阿拉善左旗| 开封县| 昭觉县| 庆元县| 文昌市| 新和县| 辽中县| 玉山县| 新密市| 凤台县| 河源市| 泊头市| 兰西县| 乌审旗| 乌兰察布市| 海阳市| 灵璧县| 绥中县| 通化县| 泽普县| 聂拉木县| 合水县| 临城县| 同仁县| 高阳县| 五原县| 尚志市| 兴义市| 罗源县| 同仁县| 岳西县| 渭源县| 崇礼县| 郸城县|