Vue3+Vite+TS解决父元素onMounted无法获取传给Slot的DOM
子组件ChildComponent
<div>
<slot/>
</div>
<script setup lang="ts">
const emits = defineEmits<{
(e: "loadedEvent"): void
}>()
onMounted(() => {
emits("loadedEvent")
})
</script>
父组件
<child-component @loaded-event="loadedEvent">
<div>
<div id="dom"></div>
</div>
</child-component>
<script setup lang="ts">
import ChildComponent from "@/component/ChildComponent.vue"
// 在这里处理父组件的初始化,类似于onMounted
const loadedEvent = () => {
console.log(document.getElementById("dom")) // 返回dom元素
}
// 此时这块可以处理其他逻辑,不可以直接获取dom
onMounted(() => {
console.log(document.getElementById("dom")) // 返回null
})
</script>
完结,撒花✿✿ヽ(°▽°)ノ✿
本文讲述了在使用Vue3、Vite和TypeScript开发时,如何在父组件的onMounted钩子函数中正确获取通过Slot传递的DOM元素。作者提供了ChildComponent示例和解决方案,指出在使用`emit`触发事件后,不能直接在onMounted中获取DOM,需在特定回调中处理。
1622

被折叠的 条评论
为什么被折叠?



