vue3如何在setup中获取DOM元素

 更新时间:2024年03月06日 08:50:57   作者:涵。  
这篇文章主要介绍了vue3如何在setup中获取DOM元素问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue3在setup获取DOM元素

vue3的setup()中this为undefined,是获取不到DOM元素的,用document.getElement也获取不到,于是查了网上

方法如下

vue3引入一个新的APIgetCurrentInstance,调用它可以得到当前组件的实例对象,然后给要获取的元素添加ref,通过

<input ref='input'>

let instance=null
onMounted(()=>{
	instance=getCurrentInstance()
})

//instance.refs.input.value可以获取输入框的值

vue3的setup用getElementById获取dom元素

起因

在循环使用canvas时,给每个canvas设置了一个id,我想通过id来操作canvas,但是在setup中不能用原生的js获取dom元素, 于是就有了这篇文章。

解决办法

首先是原始代码

function drawCategorySample(all_category_one) {
  let pixels = all_category_one[1][0]
  console.log(pixels)
  let elem_id = 1 + '_' + pixels["category_id"]
  console.log("id=" + elem_id)
  const canvas = document.getElementById('1_0')
  console.log(canvas)
  // let ctx = canvas.getContext('2d');
}

显然,在onmounted中调用这个函数时,canvas打印出来是null,所以就有了下面的改进,即多加了一行await nextTick(),意思是等页面dom元素全都挂载后再执行后面的代码。

async function drawCategorySample(all_category_one) {
  await nextTick()
  let pixels = all_category_one[1][0]
  console.log(pixels)
  let elem_id = 1 + '_' + pixels["category_id"]
  console.log("id=" + elem_id)
  const canvas = document.getElementById('1_0')
  console.log(canvas)
  // let ctx = canvas.getContext('2d');
}

问题解决!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Element中Select选择器的实现

    Element中Select选择器的实现

    本文主要介绍了Element中Select选择器的实现,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue v-for 使用问题整理小结

    vue v-for 使用问题整理小结

    使用v-for指令的时候遇到一个错误问题,具体错误代码在文章给大家列出,对vue v-for使用问题感兴趣的朋友跟随小编一起学习吧
    2019-08-08
  • Vue中 引入使用 babel-polyfill 兼容低版本浏览器的方法

    Vue中 引入使用 babel-polyfill 兼容低版本浏览器的方法

    最近在项目中使用 webpack 打包后升级,用户反馈使用浏览器(chrome 45)访问白屏。经过排查发现:由于 chrome 45 无法兼容 ES6 语法导致的,接下来给大家介绍下Vue中 引入使用 babel-polyfill 兼容低版本浏览器方法,需要的朋友可以参考下
    2023-02-02
  • 表格Table实现前端全选所有功能方案示例(包含非当前页)

    表格Table实现前端全选所有功能方案示例(包含非当前页)

    这篇文章主要为大家介绍了表格Table实现前端全选所有功能,包括非当前页的方案示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • vue调用微信JSDK 扫一扫,相册等需要注意的事项

    vue调用微信JSDK 扫一扫,相册等需要注意的事项

    这篇文章主要介绍了vue调用微信JSDK 扫一扫,相册等需要注意的事项,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01
  • vuex命名空间的使用

    vuex命名空间的使用

    本文主要介绍了vuex命名空间的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Vue2项目中对百度地图的封装使用详解

    Vue2项目中对百度地图的封装使用详解

    近期项目需求相关地图限定使用百度地图,功能比较简单,下面这篇文章主要给大家介绍了关于Vue2项目中对百度地图的封装使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • axios请求二次封装之避免重复发送请求

    axios请求二次封装之避免重复发送请求

    在做vue中大型项目的时候,官方推荐使用axios,但是原生的axios可能对项目的适配不友好,所以在工程开始的来封装一下axios,下面这篇文章主要给大家介绍了关于axios请求二次封装之避免重复发送请求的相关资料,需要的朋友可以参考下
    2022-10-10
  • 在Vue中实现样式隔离的几种方法小结

    在Vue中实现样式隔离的几种方法小结

    在 Vue 开发中,为了防止组件之间样式冲突,通常使用 scoped 属性来实现样式隔离,然而,在使用第三方 UI 组件库)时,我们往往需要对这些组件的内部元素进行样式定制,本文档详细介绍了 Vue 中的样式隔离机制、深度选择器的用法及兼容性,需要的朋友可以参考下
    2025-10-10
  • npm run dev失败的简单解决办法

    npm run dev失败的简单解决办法

    最近工作中遇到了npm run dev报错这个问题,通过查找相关资料最终解决了,所以下面这篇文章主要给大家介绍了关于npm run dev失败的详细解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论