vue3中三种插槽

本文介绍了Vue中匿名插槽的无名使用场景,具名插槽用于区分不同内容,以及作用域插槽在数据传递和动态渲染中的应用。根据需求选择合适的插槽类型能提升组件灵活性和可维护性。
摘要由CSDN通过智能技术生成

匿名插槽

        匿名插槽没有为插槽指定名称,你们插槽一般在只有一个的时候使用,所有的东西会填充在一个插槽内

父组件

<template>
  <div>
    <!-- 匿名插槽 -->
    <Nim>
      <p>默认内容</p>
    </Nim>
  </div>
</template>

子组件

<template>
    <div>
        <slot>匿名插槽</slot>
    </div>
</template>

具名插槽

在父组件中,可以通过 v-slot:slotName 来指定具名插槽的名称,子组件通过 <slot name="slotName"></slot> 来接收具名插槽内容。

父组件

<template>
  <div>
    <!-- 具名插槽 -->
    <Jum>
      <template v-slot:header>
        <p>插槽头部内容</p>
      </template>
      <template v-slot:default>
        <p>插槽默认内容</p>
      </template>
      <template v-slot:footer>
        <p>插槽底部内容</p>
      </template>
    </Jum>
  </div>
</template>

子组件

<template>
    <div>
        <slot name="header">头部</slot>
        <slot>默认</slot>
        <slot name="footer">底部</slot>
    </div>
</template>

如果子组件找不到名字会渲染默认内容

当父组件需要向子组件传递多个具有不同名称的插槽内容时,可以使用具名插槽。比如在子组件中需要区分不同位置的内容,比如头部、尾部等,就可以使用具名插槽来实现

作用域插槽

通常同于子组件需要给父组件传值时使用

父组件

<template>
  <div>
    <!-- 作用域插槽 -->
    <Zzy>
        <template v-slot:default="slot">
            <p>{{ slot.user.age }}</p>
        </template>
    </Zzy>
  </div>
</template>

子组件

<template>
    <div>
        <slot :user="user"></slot>
    </div>
</template>

<script setup>
import { ref } from 'vue'
const user = ref({
    name:"张三",
    age:18
})
</script>

当父组件需要向子组件传递数据,并且希望子组件能够对数据进行处理后再渲染时,可以使用作用域插槽。这种方式适合于在子组件中对插槽内容进行处理或者根据传递的数据动态渲染内容的情况。

总的来说,单个插槽适用于简单的内容传递,具名插槽适用于需要在子组件中区分不同插槽内容的情况,而作用域插槽适用于需要在子组件中对插槽内容进行处理或者根据传递的数据动态渲染内容的情况。根据具体的需求选择合适的插槽方式,可以使得组件设计更加灵活和可维护。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3,使用具名插槽的方法与Vue2有所不同。Vue3使用具名插槽需要在组件使用`<slot>`标签,并在其name属性指定插槽的名称。例如,如果我们想要在组件使用名为"header"的具名插槽,可以这样写: ```html <template> <div> <slot name="header"></slot> <!-- 其他内容 --> </div> </template> ``` 然后,在使用该组件的地方,可以在组件标签内使用`<template v-slot:header>`来指定具名插槽的内容。例如: ```html <template> <component-name> <template v-slot:header> <!-- 具名插槽的内容 --> </template> </component-name> </template> ``` 需要注意的是,在Vue3,使用`v-slot`来指定插槽的内容,而不再使用`slot-scope`来定义作用域插槽。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue3插槽具名插槽、作用域插槽-足够入门了](https://blog.csdn.net/qq_61950936/article/details/126456476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue 使用插槽分发内容操作示例【单个插槽具名插槽、作用域插槽】](https://download.csdn.net/download/weixin_38675777/12927451)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值