具名插槽和匿名插槽一起使用的问题

来源: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>里面去了,不知道理解的对不对?


相关截图:

https://img.mukewang.com/climg/6145e86809ef382228801032.jpg


写回答

1回答

好帮手慕慕子

2021-09-22

同学你好,<div>...父组件...</div> 这句代码放在组件layout中,但是并没有写在具名插槽对应的template中,所以不管代码在哪里书写,默认都会添加到匿名插槽中,最终显示在main标签下,如下图所示:

https://img.mukewang.com/climg/614a8a4e09d55e8407270553.jpg

如果想要让<div>...父组件...</div> 这句代码表示父组件的内容,那么可以将这句代码放在layout组件外面,示例:

https://img.mukewang.com/climg/614a8af2099a4a5207200554.jpg

显示结果如下:

https://img.mukewang.com/climg/614a8b0b096e654b12290421.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程

相似问题