具名插槽和匿名插槽一起使用的问题
来源:1-10 使用插槽和具名插槽解决组件内容传递问题(2)
PADAopanda
2021-09-18 21:25:57
const app = Vue.createApp({
template: `
<layout>
<div>...父组件...</div>
<template v-slot:header>
<h1>header</h1>
<div>...page title...</div>
</template>
<h2>Main Content</h2>
<p>... Paragraph 1 ...</p>
<p>... Paragraph 2 ...</p>
<template v-slot:footer>
<h2>footer</h2>
<p>...footer info...</p>
</template>
</layout>
`
});
app.component('layout', {
template: `
<div class="container">
<header>
<slot name="header"></slot>
</header>
<main>
<slot></slot>
</main>
<footer>
<slot name="footer"></slot>
</footer>
</div>
`
});
const vm = app.mount('#root');
问题描述:
如果具名插槽中间搭配匿名插槽会怎么样?为什么写在第一行的<div>...父组件...</div>
会分配到<main>这一div里面去呢?我的理解是:不是具名插槽<skot name=xxx>包裹的部分都被放入匿名插槽<slot></slot>里面去了,不知道理解的对不对?
相关截图:
1回答
同学你好,<div>...父组件...</div> 这句代码放在组件layout中,但是并没有写在具名插槽对应的template中,所以不管代码在哪里书写,默认都会添加到匿名插槽中,最终显示在main标签下,如下图所示:
如果想要让<div>...父组件...</div> 这句代码表示父组件的内容,那么可以将这句代码放在layout组件外面,示例:
显示结果如下:
祝学习愉快~
相似问题