首页 > 其他分享 >Vue 插槽

Vue 插槽

时间:2025-01-06 22:32:50浏览次数:1  
标签:Vue 插槽 默认 test html 组件 data

一、作用

父组件可以向子组件指定位置插入html结构,也是一种通信方式,适用于 父组件=>子组件

二、分类

默认插槽、具名插槽(有具体名字的插槽)、作用域插槽

三、使用方式

1、默认插槽

父组件

<Category title="美食" >
    <ul> 
        <li v-for="data,index in foods" :key="index"> {{data}}</li>
    </ul>
</Category>

子组件 Category.vue文件中

<template>
    <div class="category">
        <h3>{{title}}分类</h3>
        <!-- 定义默认插槽,用来接收父组件传递的html结构 -->
        <slot>插槽默认内容</slot>
    </div>
</template>

2、具名插槽

场景:父组件向子组件插入多个html结构,需要具名插槽

子组件:命名插槽,关键字name

父组件:使用插槽,slot=子组件的插槽名,最好用<template></template>包裹,不影响结构

-----------

父组件

<!-- 父组件 -->
<template   slot="center">
    <ul> 
        <li v-for="data,index in foods" :key="index"> {{data}}</li>
    </ul>
</template>

<template slot="footer">
    <a href="https://www.baidu.com">百度一下</a>
</template>

子组件

<template>
    <div class="category">
        <h3>{{title}}分类</h3>
        <!-- 定义默认插槽,用来接收父组件传递的html结构 -->
        <slot name="center">插槽默认内容ul li</slot>
        <slot name="footer">插槽内容 a 标签</slot>
    </div>
</template>

3、作用域插槽

场景:父组件向子组件传递html结构,html结构需要使用数据,但是数据在子组件里,需要使用作用域插槽实现

子组件在slot中 动态绑定值 :test="test"

父组件想要插入的html 外包的 <template scop="xx"></template>,xx是定义的值,获取值需要通过xx.test 或 scop="{test}"

父组件

<Category title="美食" >
    <!-- 父组件 -->
    <!-- 接收值第一种方法 -->
    <template scope="abc">
        <ul> 
            <li v-for="data,index in abc.foods" :key="index"> {{data}}</li>
        </ul>
    </template>

</Category>

<Category title="美食" >
    <!-- 父组件 -->
    <!-- 接收值第二种方法-->
    <template scope="{foods}">
        <ul> 
            <li v-for="data,index in foods" :key="index"> {{data}}</li>
        </ul>
    </template>
</Category>

子组件

<template>
    <div class="category">
        <h3>{{title}}分类</h3>
        <!-- 定义默认插槽,用来接收父组件传递的html结构 -->
        <slot :foods="foods">插槽默认内容ul li</slot>
    </div>
</template>

 

标签:Vue,插槽,默认,test,html,组件,data
From: https://www.cnblogs.com/wt7018/p/18656439

相关文章