我正在做一件事
vue.js 3
项目,我需要参考/获得
div
通过最初声明
null
像这样的参考
const refRouterView = ref(null)
我不知道如何让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>
我犯了这个错误
Object is possibly 'null'
添加之前
?
到
refRouterView.value?
这看起来像黑客,我不喜欢。加上
?
我开始看到这个错误
Property '$el' does not exist on type 'never'.
我试着加上
HTMLElement
到
const refRouterView : HTMLElement = ref(null);
但这会导致这个错误
Property 'value' does not exist on type 'HTMLElement'.
即使添加了
?
到
重构视图。价值
请帮忙!
更多信息
最初我的问题是使用
div(ref='refRouterView')
@Thomas的答案解决了这个问题,但我使用了
router-view
.只是为了让我的问题更容易理解
div
而不是
路由器视图
这让我们困惑,因此答案并没有解决我的问题。
<template lang="pug">
.flex
div(ref='refRouterView')
...
</template>