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

Vue3獲取元素DOM的兩種方法

 更新時間:2024年04月22日 08:22:19   作者:Carlos_sam  
Vue3 DOM是Vue.js框架的一部分,用于處理與瀏覽器DOM相關(guān)的操作,它提供了一組API和工具,使開發(fā)者能夠輕松地操作和管理DOM元素,本文給大家介紹了Vue3獲取元素DOM的兩種方法:ref模板引用和傳統(tǒng)方法,并有詳細(xì)的代碼示例,需要的朋友可以參考下

Vue3中獲取dom的方法有兩種 : ref模板引用和傳統(tǒng)方法

1.ref模板引用

模板引用是官方提出的方法,請看下面的例子:

<template>
    <canvas ref="solarCanvas" id="solar" width="1300" height="900"></canvas>
</template>

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

const solarCanvas = ref(null)
onMounted(() => {
  console.log(solarCanvas.value)//HTMLCanvasElement{...}
})
</script>

這里要注意的是只可以在組件掛載后才能訪問模板引用 ,上面的例子中onMounted執(zhí)行時組件已經(jīng)掛載了 , 所以打印solarCanvas有值。

<template>
    <canvas ref="solarCanvas" id="solar" width="1300" height="900"></canvas>
</template>

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

const solarCanvas = ref(null)
console.log(solarCanvas.value)//null
</script>

反之,如果這樣寫打印出來的值就為null,因為此時組件還沒有掛載完成。

2.傳統(tǒng)方法

傳統(tǒng)方法就是指使用JS原生的獲取dom的方法,如:getElementById、querySelector等。請看下面的例子:

<template>
    <canvas id="solar" width="1300" height="900"></canvas>
</template>

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

onMounted(() => {
  const canvas = document.getElementById('solar')
  console.log(canvas)//HTMLCanvasElement{...}
})
</script>

拓展:Vue3獲取DOM節(jié)點的幾種方式

1 .原生js獲取 DOM 節(jié)點:

document.querySelector(選擇器)
document.getElementById(id選擇器)
document.getElementsByClassName(class選擇器)
....

2. vue2中獲取當(dāng)前組件的實例對象:

因為每個 vue 的組件實例上,都包含一個 $refs 對象,里面存儲著對應(yīng)的 DOM 元素或組件的引用。所以在默認(rèn)情況下, 組件的 $refs 指向一個空對象 。

可以先在組件上加上 ref="名字" ,然后通過 this.$refs.名字 獲取相應(yīng)元素并進(jìn)行操作。

<template>
  <div class="box">
    <h1 ref="divDom">這是一個測試樣例</h1>
    <button ref="but">按鈕</button>
  </div>
</template>
 
<script>
 
export default {
  data() {
    return {
    }
  },
  methods: {
    showThis(){
      // h1的實例對象 
      console.log(this);
      this.$refs.divDom.style.color='yellow'
      //引用到組件的實例之后,也可以調(diào)用組件上的 methods方法
      this.$refs.but.click();
    },
  },
}
</script>

3.vue3中獲取當(dāng)前組件的實例對象:

在Vue3框架里面是解除了this這個對象,所以無法使用this.$refs的方式獲取自定義組件 ref 的DOM節(jié)點。

但是vue3中自帶了能返回當(dāng)前組件實例對象的函數(shù) getCurrentInstance,通過該函數(shù)獲取對象節(jié)能看到該對象包含界面中的refs。

<template>
    <div ref="divDom"></div>
</template>
 
<script setup>
    import { ref, getCurrentInstance } from 'vue';
    
    const divDom = ref(null);
    onMounted(()=>{
        console.log('獲取dom元素',divDom)
    })
 
    // 獲取頁面的實例對象
    const pageInstance = getCurrentInstance();
    // 獲取dom節(jié)點對象
    const tagDomObj = pageInstance.refs.divDom;
 
</script>

3.結(jié)論

在Vue3當(dāng)獲取DOM的方法主要有兩個:模板引用和傳統(tǒng)方法。

但需要注意的是,無論使用哪種方法都只有在組件掛載之后才能獲取到DOM,可以使用watchonMounted確保自己已經(jīng)獲取到DOM。

到此這篇關(guān)于Vue3獲取元素DOM的兩種方法的文章就介紹到這了,更多相關(guān)Vue3獲取DOM內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3使用深度選擇器修改樣式問題

    vue3使用深度選擇器修改樣式問題

    這篇文章主要介紹了vue3使用深度選擇器修改樣式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue.set() (this.$set)的用法及說明

    vue.set() (this.$set)的用法及說明

    這篇文章主要介紹了vue.set() (this.$set)的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue-treeselect無法點擊問題(點擊無法出現(xiàn)拉下菜單)

    vue-treeselect無法點擊問題(點擊無法出現(xiàn)拉下菜單)

    這篇文章主要介紹了vue-treeselect無法點擊問題(點擊無法出現(xiàn)拉下菜單),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中的循環(huán)對象屬性和屬性值用法

    vue中的循環(huán)對象屬性和屬性值用法

    這篇文章主要介紹了vue中的循環(huán)對象屬性和屬性值用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue利用sync語法糖實現(xiàn)modal彈框的項目實踐

    vue利用sync語法糖實現(xiàn)modal彈框的項目實踐

    本文主要介紹了vue利用sync語法糖實現(xiàn)modal彈框的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解如何優(yōu)雅運用Vue中的KeepAlive組件

    詳解如何優(yōu)雅運用Vue中的KeepAlive組件

    在Vue中,KeepAlive組件是一種特殊的組件,用于緩存已經(jīng)渲染過的組件實例,本文主要為大家詳細(xì)介紹了KeepAlive組件的用法,需要的小伙伴可以參考下
    2023-09-09
  • Vue3 openlayers加載瓦片地圖并手動標(biāo)記坐標(biāo)點功能

    Vue3 openlayers加載瓦片地圖并手動標(biāo)記坐標(biāo)點功能

    這篇文章主要介紹了 Vue3 openlayers加載瓦片地圖并手動標(biāo)記坐標(biāo)點功能,我們這里用vue/cli創(chuàng)建,我用的node版本是18.12.1,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • vue中element-ui表格縮略圖懸浮放大功能的實例代碼

    vue中element-ui表格縮略圖懸浮放大功能的實例代碼

    element-ui界面非常簡潔和美觀,提供的組件可以滿足絕大多數(shù)的應(yīng)用場景,當(dāng)表格中顯示了圖片的縮略圖時,想要鼠標(biāo)浮動在縮略圖上時放大圖片的效果,該如何實現(xiàn)呢?下面小編通過實例代碼給大家介紹vue中element-ui表格縮略圖懸浮放大功能,一起看看吧
    2018-06-06
  • 一次VUE項目中遇到XSS攻擊的實戰(zhàn)記錄

    一次VUE項目中遇到XSS攻擊的實戰(zhàn)記錄

    XSS?攻擊是頁面被注入了惡意的代碼,下面這篇文章主要給大家介紹了一次VUE項目中遇到XSS攻擊的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • 利用vue-router實現(xiàn)二級菜單內(nèi)容轉(zhuǎn)換

    利用vue-router實現(xiàn)二級菜單內(nèi)容轉(zhuǎn)換

    這篇文章主要介紹了如何利用vue-router實現(xiàn)二級菜單內(nèi)容轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論

汉中市| 合江县| 卓资县| 城步| 中江县| 浦城县| 皮山县| 和静县| 城步| 旌德县| 贵定县| 容城县| 宣武区| 太仓市| 湾仔区| 安仁县| 双城市| 新野县| 措美县| 崇州市| 郸城县| 石林| 松阳县| 冷水江市| 诏安县| 邳州市| 永济市| 廊坊市| 吉木萨尔县| 南召县| 延津县| 界首市| 广灵县| 潼关县| 郯城县| 金门县| 西安市| 昂仁县| 孟连| 定南县| 阿合奇县|