vue3 默认插槽,具名插槽,动态插槽

1 Dialog.vue

<template>

  <div>

    <header class="header">

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

    </header>

    <main class="main">

      <div v-for="(item,index) in data" :key="item.age">

        <!-- 匿名插槽 --传值 -->

        <slot :data="item" :index="index"></slot>

      </div>

    </main>

    <footer class="footer">

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

    </footer>

  </div>

</template>

<script setup lang='ts'>

  import{ref,reactive} from 'vue'

  type names = {

    name:string,

    age:number

  }

  const data = reactive<names[]>([

    {

      name:"小满被插入了1",

      age:10,

    },

    {

      name:"小满被插入了2",

      age:20,

    },

    {

      name:"小满被插入了3",

      age:30,

    },

    {

      name:"小满被插入了4",

      age:40,

    }

  ])

</script>

2 index.vue

<div class="content">

      <Dialog>

        <!-- 具名插槽 可以简化 #header--对应name="header"-->

        <template #header>

          <div>

            插入头部

          </div>

        </template>

        <!-- 匿名插槽--v-slot="{data,index}" 也可以通过 #default -->

        <template #default="{data,index}">

          <div>

            {{ data.name }} -- {{ data.age }} -- {{ index }}

          </div>

        </template>

        <!-- 具名插槽 可以简化 #footer--对应name="footer"-->

        <template v-slot:footer>

          <div>

            插入尾部

          </div>

        </template>

        <!-- 动态具名插槽--会插入到 footer中 -->

        <template #[name]>

          <div>

            我在哪里

          </div>

        </template>

      </Dialog>

    </div>

<script setup lang='ts'>

import{ ref } from 'vue';

//footer或header 可以动态更改,default就中间了。

let name = ref('footer');

</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值