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

vue3獲取子組件的DOM元素的方法總結(jié)

 更新時間:2023年08月18日 10:41:54   作者:冷月半明  
在 Vue 3 中,訪問子組件的 DOM 元素是一個常見的需求,本文將介紹如何在 Vue 3 中使用不同的方法來獲取子組件的 DOM 元素,需要的朋友可以參考下

方法一

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

方法二

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

實(shí)例演示

image.png

image.png

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

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

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

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

方法三

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

image.png

父組件代碼如下:

image.png

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

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

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

相關(guān)文章

  • 運(yùn)行npm?run?dev報錯的原因及解決

    運(yùn)行npm?run?dev報錯的原因及解決

    剛剛創(chuàng)建好vue項(xiàng)目的時候,運(yùn)行 npm run dev 會報錯,下面這篇文章主要給大家介紹了關(guān)于運(yùn)行npm?run?dev報錯的原因及解決方法,需要的朋友可以參考下
    2022-10-10
  • vue中Npm run build 根據(jù)環(huán)境傳遞參數(shù)方法來打包不同域名

    vue中Npm run build 根據(jù)環(huán)境傳遞參數(shù)方法來打包不同域名

    這篇文章主要介紹了vue項(xiàng)目中Npm run build 根據(jù)環(huán)境傳遞參數(shù)方法來打包不同域名,使用npm run build --xxx,根據(jù)傳遞參數(shù)xxx來判定不同的環(huán)境,給出不同的域名配置,具體內(nèi)容詳情大家參考下本文
    2018-03-03
  • vue+iview/elementUi實(shí)現(xiàn)城市多選

    vue+iview/elementUi實(shí)現(xiàn)城市多選

    這篇文章主要介紹了vue+iview/elementUi實(shí)現(xiàn)城市多選,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • element-ui點(diǎn)擊查看大圖的方法示例

    element-ui點(diǎn)擊查看大圖的方法示例

    這篇文章主要介紹了element-ui查看大圖的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue中使用vant的Toast輕提示報錯的解決

    vue中使用vant的Toast輕提示報錯的解決

    這篇文章主要介紹了vue中使用vant的Toast輕提示報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue-cli 默認(rèn)路由再子路由選中下的選中狀態(tài)問題及解決代碼

    vue-cli 默認(rèn)路由再子路由選中下的選中狀態(tài)問題及解決代碼

    這篇文章主要介紹了vue-cli 默認(rèn)路由再子路由選中下的選中狀態(tài)問題及解決代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 如何搭建一個完整的Vue3.0+ts的項(xiàng)目步驟

    如何搭建一個完整的Vue3.0+ts的項(xiàng)目步驟

    這篇文章主要介紹了如何搭建一個完整的Vue3.0+ts的項(xiàng)目步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • vue?懸浮窗且?guī)ё詣游焦δ軐?shí)現(xiàn)demo

    vue?懸浮窗且?guī)ё詣游焦δ軐?shí)現(xiàn)demo

    這篇文章主要為大家介紹了vue?懸浮窗且?guī)ё詣游焦δ軐?shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue表單驗(yàn)證rules及validator驗(yàn)證器的使用方法實(shí)例

    vue表單驗(yàn)證rules及validator驗(yàn)證器的使用方法實(shí)例

    在vue開發(fā)中,難免遇到各種表單校驗(yàn),下面這篇文章主要給大家介紹了關(guān)于vue表單驗(yàn)證rules及validator驗(yàn)證器使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • vue3?setup語法糖各種語法新特性的使用方法(vue3+vite+pinia)

    vue3?setup語法糖各種語法新特性的使用方法(vue3+vite+pinia)

    這篇文章主要介紹了vue3?setup語法糖各種語法新特性的使用(vue3+vite+pinia),本文主要是記錄vue3的setup語法糖的各種新語法的使用方法,需要的朋友可以參考下
    2022-09-09

最新評論

米易县| 莆田市| 仪陇县| 辽阳县| 印江| 台安县| 揭西县| 西乌珠穆沁旗| 安福县| 乃东县| 渝中区| 文昌市| 甘谷县| 泰顺县| 垣曲县| 中西区| 蓬莱市| 浑源县| 揭东县| 东海县| 琼结县| 麻城市| 尼勒克县| 射阳县| 汉源县| 永泰县| 丰宁| 桂平市| 汤原县| 科尔| 平乐县| 景泰县| 鄯善县| 锡林浩特市| 延长县| 南涧| 日喀则市| 射洪县| 禄丰县| 开阳县| 沧州市|