Vue3 和 Typescript 错误:属性“$el”不存在于类型“void”上。如何正确抓取 DOM 中存在的每个标签类型?
我正在将 Vue2 项目转换为 Vue3 和 Typscript。有很多奇怪的错误,但我不确定如何在 $el
上处理这个错误。
我只是想抓住上面模板中的每个
标签,我可以,但这个错误仍然存在。
关于如何解决这个问题有什么想法吗?
这里是组件的模板,但是整个组件太大了,无法放在 stackoverflow 上。我需要定位 的
标签。
<template>
<div class="pep-header-decoration-light">
<svg
xmlns="http://www.w3.org/2000/svg"
width="1158.942"
height="143.376"
viewBox="0 0 1158.942 143.376"
>
<g :style="`color: ${colors.green}`">
<!-- ... -->
</g>
<!-- many more g elements to select here too -->
</svg>
</div>
</template>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如问题Vue 3 Composition API - 如何获取安装了组件的组件元素($el)一样,Vue 3 不鼓励使用
$el
,因为组件可以有多个顶级元素。此外, 你的箭头函数不会重新定义this
,并且此
在setup
:
,您可能应该为封闭的
div
或封闭的svg
定义一个ref
,并使用它来获取您的元素:鉴于此 您需要在
setup
返回的对象中返回新的ref
,并且 它需要与模板中的名称相同。您可以稍后使用this.$refs.divEl
访问此内容,但在setup
函数中,您无权访问this
来访问this.$refs
。As in the question Vue 3 Composition API - How to get the component element ($el) on which component is mounted, Vue 3 discourages the use of
$el
, since components can have more than one top-level element. Furthermore, your arrow function won't redefinethis
, andthis
is not available insetup
:Given that, you should probably define a
ref
for either your enclosingdiv
or your enclosingsvg
, and use that to get to your element:Note that you'll need to return the new
ref
in the object thatsetup
returns, and that it needs the same name that it has in the template. You can access this later usingthis.$refs.divEl
, but in thesetup
function you don't have access tothis
to get tothis.$refs
.