默认插槽或命名插槽在 Vue 3 中的 "router-view" 上不起作用
Default slot or named slot not working on "router-view" in Vue 3
将 header 组件作为命名槽传递到 router-view
。但是 router-view
并没有完全显示出来。通常这是在 vue 2 中工作的。但它不适用于 vue 3。是改变了还是现在做不到?
header分量
<template>
<header id="g-header">
<figure>
<img id="logo"
src="@/assets/images/logo.jpg"
alt="The beautiful MDN logo.">
</figure>
<nav id="g-nav" class="flex justify-space-between">
<a v-for="(link, idx) in links" :key="idx"
class="flex justify-center align-center capitalize"
:href="link.val">{{ link.text }}</a>
</nav>
</header>
</template>
router-view分量
<template>
<div id="moduleA" class="modules">
<router-view class="moduleA-children">
<template #header>
<app-header></app-header>
</template>
</router-view>
</div>
</template>
children 查看组件
<template>
<div id="step1">
<slot name="header"></slot>
<div class="row">the named slot OR default slot not showing</div>
</div>
</template>
有没有办法做到这一点?或者我在这里遗漏了什么?
在 Vue Router 4 中,<router-view>
公开要呈现为 v-slot
prop, named Component
的组件,它将与内置的 <component>
标签一起使用。您可以将任何插槽传递给该 <component>
标记内的组件:
<router-view v-slot="{ Component }">
<component :is="Component">
<template #header>
<app-header></app-header>
</template>
</component>
</router-view>
将 header 组件作为命名槽传递到 router-view
。但是 router-view
并没有完全显示出来。通常这是在 vue 2 中工作的。但它不适用于 vue 3。是改变了还是现在做不到?
header分量
<template>
<header id="g-header">
<figure>
<img id="logo"
src="@/assets/images/logo.jpg"
alt="The beautiful MDN logo.">
</figure>
<nav id="g-nav" class="flex justify-space-between">
<a v-for="(link, idx) in links" :key="idx"
class="flex justify-center align-center capitalize"
:href="link.val">{{ link.text }}</a>
</nav>
</header>
</template>
router-view分量
<template>
<div id="moduleA" class="modules">
<router-view class="moduleA-children">
<template #header>
<app-header></app-header>
</template>
</router-view>
</div>
</template>
children 查看组件
<template>
<div id="step1">
<slot name="header"></slot>
<div class="row">the named slot OR default slot not showing</div>
</div>
</template>
有没有办法做到这一点?或者我在这里遗漏了什么?
在 Vue Router 4 中,<router-view>
公开要呈现为 v-slot
prop, named Component
的组件,它将与内置的 <component>
标签一起使用。您可以将任何插槽传递给该 <component>
标记内的组件:
<router-view v-slot="{ Component }">
<component :is="Component">
<template #header>
<app-header></app-header>
</template>
</component>
</router-view>