我将 vue3 与 nuxt3 结合使用,并希望在生成的 #document-fragment 中添加一个包含内容的模板标签。生成的 HTML 应如下所示:
<body>
<template id="some-id">
#document-fragment
<div>
...
</div>
</template>
</body>
当我使用纯 html 时,效果很好。在 vue3 中,元素不在 #document-fragment 内部,而是在其下方,如下所示:
<body>
<template id="some-id">
#document-fragment
<div>
...
</div>
</template>
</body>
我的vue3代码如下所示(类似于html代码):
<template>
<v-app>
<template id="some-id">
<div></div>
</template>
</v-app>
</template>
有什么方法可以将内容放入#document-fragment元素中吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我通过在模板标记上使用 ref 然后使用
render函数解决了这个问题。const someRef: Ref<HTMLTemplateElement | undefined> = ref() onMounted(() => { if (someRef.value?.content) { // @ts-ignore render('div', someRef.value.content) } })如果你想插入一个组件,你可以像这样使用它:
const someRef: Ref<HTMLTemplateElement | undefined> = ref() onMounted(() => { if (someRef.value?.content) { // @ts-ignore render(h(SomeComponent, { someProp: someValue }), someRef.value.content) } })也许有更好的,但目前可行。