我在将动态生成的布局与命名插槽结合起来时遇到问题。
要定义我的布局,我使用“组件:is”
//app.vue
<template>
<component :is="layout">
<router-view />
</component>
</template>
<script>
computed: {
layout() {
const layout = this.$route.meta.layout || 'default'
return () => import(`@/app/layouts/${layout}.vue`)
}
},
</script>
//layouts/default.vue
<template>
<div>
<div>
<slot name="header" />
</div>
<div>
<div>
<slot name="sidebar" />
</div>
<div>
<slot name="default"/>
</div>
</div>
</div>
</template>
// views/page.vue
<template>
<div>
<template #header>
<h1>Primitives</h1>
</template>
<template #sidebar>
<ul>
<li v-for="primitive in sections.sections" :key="primitive">
<router-link :to="`/primitives/${primitive}`">{{primitive}}</router-link>
</li>
</ul>
</template>
<template #default>
<router-view :key="$router.path" />
</template>
</div>
</template>
但是现在我在我的代码中得到了这个错误
'v-slot' 指令必须由自定义元素拥有,但 'div' 不是。
和控制台显示此错误
<\template v-slot> 只能出现在接收组件内部的根级别
如果我删除主 div 我会收到错误
模板根只需要一个元素。
我做错了什么?