我已经在这个问题上停留了一段时间,没有在线信息。使用VUE 3
- 我在路由器
meta:
标记中定义了一个布局组件。 - 在我的
App.vue
中,我检查指定的路由是否有layout meta标记,如果有,则'component:is=“layout”为真。
App.vue
<template>
<component :is="layout">
<router-view />
</component>
</template>
<script>
computed: {
layout() {
let layout = null;
for (const match of this.$route.matched)
if (match.meta && match.meta.layout) layout = match.meta.layout;
if (layout) return layout;
return "div";
},
}
</script>
router.vue
const usLayout = () => import("../layouts/usLayout.vue");
{
path: "/",
name: "us",
component: GenericRouterView,
meta: { layout: usLayout },
children: usRoutes,
},
我得到这个错误:
[Vue警告]:无效的VNode类型:在UsLayout
处未定义在App
处未定义
而且屏幕上什么都没有显示。你知道这个错误是什么意思/是什么原因吗?
2条答案
按热度按时间3bygqnnd1#
您的问题是在
is="div"
中使用div
。component
中的:is
指令只接受组件定义,而不接受标记。使用您的代码不可能直接呈现组件。您必须 Package 到另一个
div
或使用render
函数:使用渲染函数:
vx6bjr1n2#
当我迁移到
Vue3
时,我遇到了这个错误,并且没有在新的帮助函数defineAsyncComponent
中 Package 我的延迟加载的Async Components
。错误
工程