vue3中的slot

具名插槽

带有name的插槽称为具名插槽

子组件A内容

   <header>
      <slot  name="header"></slot>
   </header>
   <main>
      <slot  name="main"></slot>
   </main>
   <footer>
      <slot></slot>
   </footer>

父组件内容

 <A>
        <template v-slot:header>
            header 插槽的内容放这里 
        </template>

        <!-- v-slot的简写为# -->
        <template #main>
            main 插槽的内容放这里 
        </template>

        <!-- 没有提供 name 的 <slot> 出口会隐式地命名为“default” -->
        <template #default>
           name未提供
        </template>
    </A>

动态插槽名 

子组件A内容

 <header>
      <slot  name="header"></slot>
   </header>
   <main>
      <slot  name="main"></slot>
   </main>
   <footer  name='footer'>
      <slot></slot>
   </footer>

父组件内容

   <A>
        <template  #[name] >
            sss
        </template>
    </A>

    //header的内容会显示
    const name=ref('header')

作用域插槽

可以同时使用父组件域内和子组件域内的数据

子组件A的内容

<template>
   <div>
  	   <slot :text="message" :count="1"></slot>
	</div>
   <button  @click="change">点击</button>
</template>

<script lang="ts" setup>
import {   reactive,   ref } from 'vue';
  const message=ref('Hi')
  const change=()=>{
   message.value='Hello'
  }
</script>

父组件的内容

<A  v-slot="slotProps">
   {{ slotProps.text }} {{ slotProps.count }} 
</A>

使用解构
 <A  v-slot="{text , count}">
        {{ text }} {{ count }} 
 </A>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值