Vue2 插槽 (默认插槽,具名插槽,作用域插槽)

插槽 (slot)

  1. 作用:让父组件可以往子组件指定位置插入 html 结构,也是组件的一种通信方式。
  2. 分类: 默认插槽,具名插槽,作用域插槽。
默认插槽
父组件(此时 Count 是一个组件):
     <Count>     
           <div> html 结构</div>
     </Count>

子组件:
     <template>
            <div>
               <slot></slot>
            </div>  
    </template>
    // 渲染结果为 :html 结构
具名插槽 (给插槽取个名字,方便准确找到该渲染的位置)

注意 v-slot:简写为 # 且 具名插槽需要用 template 包裹(组件不用 template 包裹)

父组件:
 <Active>
      <template #Header>
        <p>满江红</p>
      </template>
      
      </template>
      <template #Foot>
        <p>忽然看不见</p>
      </template>
  </Active>

子组件:
<template>
  <div>
    <div>
      <slot name="Header">若父组件中 #Header 无内容,则渲染默认值,而默认值就是在这个地方填写</slot>
    </div>

    <div>
      <slot name="Foot">默认值....</slot>
    </div>
  </div>
</template>
作用域插槽

可用 解构赋值 具体如下

父组件:
<Active>
      <template #Header="obj">
        <p>满江红 ---- {{obj.user}}</p>
      </template>
      <template #content="{ msg, user }">
        <div>
          <p>红漫天</p>
          <p>{{ msg.name }}</p>
          <p>{{ user }}</p>
          <p>{{ msg.age }}</p>
          <p>{{ msg.gender }}</p>
        </div>
      </template>
      <template #Foot>
        <p>忽然看不见</p>
      </template>
    </Active>

子组件:
<template>
  <div class="active-container">
    <div class="Header">
      <slot name="Header" user="hello Vue.js"></slot>
    </div>

    <div class="content">
      <slot name="content" :msg="list" user="hello Vue.js"></slot>
    </div>

    <div class="Foot">
      <slot name="Foot"></slot>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list:{
        name:"zdd",
        age:18,
        gender: "男"
      }
    }
  },
};
</script>

此项结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值