vue插槽

插槽

vue为组件封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽

插槽的使用步骤

  • 定义插槽
//子组件中定义插槽
<slot></slot>
  • 父组件中使用插槽
<children-component>
    <div></div>
</children-component>
或者
<children-component>
    <template>
    插槽内容
    </template>
</children-component>

插槽分类

默认插槽

定义插槽时未声明插槽名称或者名称为dafault时,则为默认插槽

  • 定义
<slot></slot>
或者
<slot name="default"></slot>
  • 使用
    只需要在父组件中 子组件标签内直接定义插槽内容即可。换句话说,父组件中子组件标签内未标明插槽内容的均放到默认插槽位置
<children-component>
    直接书写默认插槽内容
</children-component>
或者
<children-component>
    <template #default></template>
</children-component>
或者
<children-component>
    <template slot="default"></template>
</children-component>

具名插槽

定义插槽时声明插槽名称,则称为具名插槽

  • 定义
<slot name="slot-name"></slot>
  • 使用
    在父组件中子组件标签内标明插槽内容
<children-component>
    <template v-slot:slot-name></template>
</children-component>
或者简写为:
<children-component>
    <template #slot-name></template>
</children-component>
或者
<children-component>
    <template slot="slot-name"></template>
</children-component>

作用域插槽

子组件内定义插槽是添加prop属性,可以像父组件传递参数

  • 定义
<slot name="slot-name" age="18", size="medium"></slot>
<slot age="18", size="medium"></slot>
  • 使用
    父组件的子组件标签内:在插槽标签内使用slot-scope属性,即可以使用插槽内容中的prop属性
scoped是从子组件定义插槽时,给组件添加的所有prop属性组成的数组
<children-component>
    <!-- 默认插槽只需要v-slot="scoped" -->
    <template v-slot:slot-name="scoped"></template>
</children-component>
<!-- 或者简写为: -->
<children-component>
    <template #slot-name="scoped"></template>
</children-component>
<!-- 或者 -->
<children-component>
    <template slot="slot-name" slot-scoped="scoped"></template>
</children-component>

后备内容

如果父组件没有自定义子组件的插槽内容时,默认展示插槽定义时的后背内容

<!-- 定义插槽时 -->
<slot>
    <!-- 后备内容,比如:
    <button></button> -->
</slot>

重命名插槽

<!-- 父组件内,相当于在父组件中给插槽的某个属性重命名 -->
<current-user v-slot="{ user: person }">
  {{ person.firstName }}
</current-user>

默认值

当子组件传出的prop为未定义时,父组件提供了一个默认值

<children-component>
    <template slot-scoped="{name='noway'}"></template>
</children-component>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值