【发布时间】:2021-12-30 01:05:33
【问题描述】:
我正在处理 vue.js 3 项目,我需要通过最初声明像这样的 null 引用 const refRouterView = ref(null) 来在我的脚本中引用/获取 div 元素,但我不确定如何制作 TypeScript知道DomElement。
标记已更新
<template lang="pug">
.flex
router-view(ref='refRouterView')
...
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue';
const refRouterView = ref(null);
const routerViewHeight = ref(500);
const getRouterViewHeight = () => {
setTimeout(() => {
routerViewHeight.value = refRouterView.value?.$el.offsetHeight;
}, 250);
};
onMounted(() => getRouterViewHeight());
</script>
在将? 添加到refRouterView.value? 之前,我收到了这个错误Object is possibly 'null',这看起来像是hack,我不喜欢它。而且,在添加? 之后,我开始看到这个错误Property '$el' does not exist on type 'never'.
我尝试将HTMLElement 添加到const refRouterView : HTMLElement = ref(null);,但这会引入此错误Property 'value' does not exist on type 'HTMLElement'.,即使将? 添加到refRouterView.value? 后也没有解决
请帮忙!
更多信息
最初我的问题是使用div(ref='refRouterView'),@Thomas 的答案解决了它,但我使用的是router-view。只是为了让我的问题易于理解,我提到了div 而不是router-view,这让我们感到困惑,因此答案并没有解决我的问题。
<template lang="pug">
.flex
div(ref='refRouterView')
...
</template>
【问题讨论】:
标签: javascript typescript vue.js vuejs3