首页 前端知识 vue中三种插槽(默认插槽、具名插槽、作用域插槽)的使用方法

vue中三种插槽(默认插槽、具名插槽、作用域插槽)的使用方法

2025-03-20 12:03:45 前端知识 前端哥 522 587 我要收藏

目录

1.插槽(slot)是什么?

2.默认插槽(匿名插槽) 

使用默认插槽最常见的情况:父组件把内容插入到子组件留下的一个插槽中

如果子组件中有多个默认插槽,父组件中插入一个/多个内容会怎样? 

3.具名插槽 

使用具名插槽的正常情况示例: 

使用具名插槽的时候父组件并未插入任何内容结果会怎样?

​4.作用域插槽


1.插槽(slot)是什么?

插槽:简单来说就是在组件的内部留一个或多个空白的位置,可供其他使用它的组件传对应的模板代码进去。插槽让组件复用变的更加灵活了。
在Vue3中,插槽被称为<slot>元素。你可以在组件的模板中使用<slot>元素来声明一个插槽。

2.默认插槽(匿名插槽) 

使用默认插槽最常见的情况:父组件把内容插入到子组件留下的一个插槽中

父组件示例:

// parent.vue

<template>
  <div class="home">
    <son>
    	<p>我是会被插入子组件插槽位置的默认插槽内容</p>
    </son>
  </div>
</template>

<script>
import son from '@/components/son.vue'
export default {
  components: {
    son,
  }
}
</script>

 子组件示例:

// son.vue

<template>
  <div>
  	<h1>子组件</h1>
    <slot></slot>	//这里就是子组件插槽的位置,会被替换为父组件的 <p>我是会...内容</p>
  </div>
</template>

结果示例:

修改主入口文件:

如果子组件中有多个默认插槽,父组件中插入一个/多个内容会怎样? 

父组件示例:

子组件示例:

结果示例:
子组件中每个默认插槽的位置都会被插入父组件插入的所有内容!!! 

3.具名插槽 

实际上,我们希望达到的效果是插槽对应的内容插入显示,这个时候我们就可以使用具名插槽

  • 具名插槽:顾名思义就是给插槽起一个名字,<slot> 元素有一个特殊的属性name

  • 一个不带 name 的插槽slot,会有一个隐含的名字:default
  •  具名插槽在使用时的缩写实际上,具名插槽在使用时也可以缩写,即v-slot也有缩写,就是把参数之前的所有内容 (即将v-slot:) 替换为字符

    例如:v-slot:header 可以被写为 #header

使用具名插槽的正常情况示例: 

父组件示例:

子组件示例:

 结果示例:

使用具名插槽的时候父组件并未插入任何内容结果会怎样?

父组件示例:

子组件不变,结果示例:
如果父组件并未插入内容,则显示子组件中插槽自身的默认内容,否则父组件插入的插槽内容覆盖子组件中插槽自身的默认内容。


 4.作用域插槽

 父组件示例:

子组件示例:

 结果示例:

这里是使用vue3组合式写的作用域插槽代码,选项式代码后续有空了再补(可能吧......),如想使用选项式可以自行更改代码变为选项式写法。

附:本文参考文档(作用域插槽有选项式写法)


转载请注明出处或者链接地址:https://www.qianduange.cn//article/24168.html
标签
评论
发布的文章

动态规划感悟1

2025-03-20 12:03:52

华为NAS真实测评!

2025-03-20 12:03:52

Java设计模式之代理模式

2025-03-20 12:03:51

Linux 锁、线程同步

2025-03-20 12:03:48

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!