Vue3: 获取元素DOM的方法

Vue3中获取dom的方法有两种 : ref模板引用和传统方法

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执行时组件已经挂载了 , 所以打印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.传统方法

传统方法就是指使用JS原生的获取dom的方法,如:getElementByIdquerySelector等。请看下面的例子:

<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>

同样的道理,如果使用传统方法获取dom时,组件没有挂载完成的话,那么获取到的也是null

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

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

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

3.结论

在Vue3当获取DOM的方法主要有两个:模板引用和传统方法。

但需要注意的是,无论使用哪种方法都只有在组件挂载之后才能获取到DOM,可以使用watchonMounted确保自己已经获取到DOM。

参考资料

Vue3官方文档: 模板引用

相关推荐

  1. Vue3: 获取元素DOM方法

    2024-04-21 20:40:03       21 阅读
  2. 获取页面标签元素dom方法

    2024-04-21 20:40:03       38 阅读
  3. DOM概念?获取html元素方法有哪些?

    2024-04-21 20:40:03       7 阅读
  4. vue项目获取 iframe 中DOM元素

    2024-04-21 20:40:03       34 阅读
  5. Uniapp 和Vue3 小程序 获取页面dom 方法

    2024-04-21 20:40:03       22 阅读
  6. js获取dom元素宽度数值

    2024-04-21 20:40:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 20:40:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 20:40:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 20:40:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 20:40:03       18 阅读

热门阅读

  1. excel文件预览: luckyexcel+luckysheet

    2024-04-21 20:40:03       43 阅读
  2. 大数据:【学习笔记系列】flink和spark的区别

    2024-04-21 20:40:03       15 阅读
  3. MASA Framework系列-核心概念(2)

    2024-04-21 20:40:03       10 阅读
  4. WPF中TextBox失去焦点事件

    2024-04-21 20:40:03       21 阅读
  5. Linux网络实战(一)- DNS配置

    2024-04-21 20:40:03       25 阅读
  6. 计算机网络——应用层(2)FTP,DNS

    2024-04-21 20:40:03       18 阅读
  7. AMEYA360:兆易创新推出GD32L235系列低功耗MCU新品

    2024-04-21 20:40:03       22 阅读
  8. 基于httpd和lvs的dr模式简单测试

    2024-04-21 20:40:03       16 阅读
  9. 2024-4-17-ARM作业

    2024-04-21 20:40:03       13 阅读