Vue插槽详解

先看如下代码:

复制代码
//app.vue
<template>
    <div>
      <Child>
   <span>小红</span>
</Child> </div> </template>
import Child from './child.vue'
<script>
components:{
Child
}
</script>
复制代码
复制代码
//child.vue
<template>
    <div>
      <span>小明<span>   
    </div>
</template>
复制代码

渲染的界面只有小明,小红没渲染出来。

这个时候我们给child.vue一个<slot></slot>插槽

复制代码
//child.vue
<template>
    <div>
      <span>小明</span> 
      <slot></slot>
    </div>
</template>
复制代码

小明和小红都渲染出来了,这就是插槽的作用

插槽是Vue实现的一套内容分发API,<slot>标签作为内容分发的出口,没有插槽的情况下,在组件内写内容是不会起作用的。

插槽目前分为三类:

匿名插槽(默认插槽)

  如上:直接给一个slot默认的标签来分发内容,就是默认插槽

具名插槽:

  通过name属性给插槽起一个名字,在填充内容时通过v-slot指令绑定插槽名字来匹配分发数据

复制代码
//app.vue
<template>
    <div>
      <Child>
<template v-slot:m>
很帅
</template>    <span>小红</span>
<template v-slot:h>
很美
</template> </Child> </div> </template> import Child from './child.vue' <script> components:{ Child } </script>
复制代码
复制代码
//child.vue
<template>
    <div>
      <span>小明</span> 
      <slot name="m"></slot>
    <slot></slot>
<slot name="h"></slot>
</div> </template>
复制代码

作用域插槽:

  可用于组件之间数据通信

复制代码
//app.vue
<template>
    <div>
      <Child>
       <template v-slot:default="slotProps">
     //default是匿名插槽的默认名字
     //slotProps是定义的一个接收数据的变量,{say:'hello'} {{slotProps.say}} //hello </template> </Child> </div> </template> import Child from './child.vue' <script> components:{ Child } </script>
复制代码
复制代码
//child.vue
<template>
    <div>
    <slot say="hello"></slot>
    </div>
</template>
复制代码

插槽基本用法就是这样,更多的应用还需要自己在实际项目中体会。

 
posted @   腓腓无忧  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示