【vue】vue 中插槽的三种类型:


一、匿名插槽:<slot></slot>

1.没有为插槽指定名称
2.通过slot标签可以添加匿名插槽
3.在使用组件的时候,组件中的内容会填充到所有匿名插槽的位置,所以在封装组件的时候,匿名插槽一般只有一个
4.匿名插槽可以设置默认的内容,如果没有传入内容就使用默认内容,如果传入了,就会进行覆盖
在这里插入图片描述
在这里插入图片描述

二、具名插槽:<slot name="名称"></slot>

1.为slot设置名字的插槽就称为具名插槽
2.一个封装组件中可以有多个具名插槽
3.使用:通过template标签指定内容所放置的插槽名称
4.使用简写:v-slot:名字 或者 #名字
在这里插入图片描述在这里插入图片描述

三、作用域插槽

在封装组件的过程中,可以为预留的 插槽绑定 props 数据(除了name),这种带有 props 数据的 叫做“作用域插槽"

<div>
    <h1>作用域插槽</h1>
    <!-- 
    作用域插槽需要设置name属性
    在子组件中通过v-bind的方式设置属性
    1.如果是固定值,就直接写
    2.如果是变量,就v-bind 
 
    myname:是定义的key的名称,这个名称后期与接收数据时的名称一致
    username:当前封装组件中的数据变量-->
    <slot name='ok'
          :myname='username'
          age='20'
          :hobby='hobby'>我要传递用户名给父组件</slot>
</div>

使用作用域插槽:在使用包含作用域插槽的组件时,可以使用 v-slot: 插槽名称 的形式,接收作用域插槽对外提供的数据

<dataSlot>
    <!-- 传递过来的数据是一个对象,所以可以解构的方式获取数据 -->
    <!-- <template v-slot:ok='obj'> {myname:'jack'...}-->
    <template v-slot:ok='{myname,hobby}'>
        <p>{
   
   {myname+"---"+hobby}}</p>
        <p>{
   
   {myname}}</p>
        <p v-for='(v,i) in hobby'
           :key='i'>{
   
   {v}}</p>
    </template>
</dataSlot>

在这里插入图片描述
在这里插入图片描述
【案例】

将数据提供给插槽内部使用
在这里插入图片描述
拿到插槽提供的数据,默认为空对象
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_53791978/article/details/132859709