Vue中插槽slot的使用示例详解

2025-05-19 15:50

本文主要是介绍Vue中插槽slot的使用示例详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...

一、插槽是什么

插槽就是子组件中的提供给父组件使用的一个占位符,用表示,父组件可以在这个占位符中填充任何模板代码,如 html、组件等,填充的内容会替换子组件的标签。简单理解就是子组件中留下个“坑”,父组件可以使用指定内容来补&ldChina编程quo;坑”。

插槽(slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽。

二、插槽分类

2.1 匿名插槽

匿名插槽是最基本的插槽类型,它不需要指定名称。在子组件中,你可以简单地在模板中放置一个 标签,而在父组件中使用该子组件时,可以插入任何内容来填充这个插槽。如果父组件没有提供任何内容,则插槽会默认显示其内部的备用内容。

2.2 具名插槽

具名插槽允许你为插槽指定一个名称,从而可以在一个组件中定义多个插槽,并在父组件中明确地决定内容应该填充到哪一个插槽中。在子组件中,通过为 标签添加 name 属性来定义具名插槽。

2.3 作用域插槽

作用域插槽是一种特殊的插槽,它允许子组件向父组件传递数据,使得父组件可以访问子组件的作用域中的数据。这样,父组件就可以根据子组件的状态来决定插槽的内容。在子组件中,可以通过 标签的属性来传递数据。

三、插槽的基本使用

3.1 匿名插槽

匿名:name默认为default

3.1.1 基本使用

父组件

<template>
  <div>
    <p>我是A组件</p>
  </div>
</template>
<script>
   export default {
     name:'A',
     data(){
       return {
       }
 			}
    }
</script>

子组件

<template>
  <div>
    <p>我是B组件</p>
  </div>
</template>
<script>
export default {
  name: "B",
  data() {
    return {};
  },
};
</script>

在父组件中使用子组件
如果我们想要直接在子组件标签中写内容,是不生效的,如:123,指定内容123会被丢弃。

<template>
  <div>
    <p>我是A组件</p>
    <B>123<B/>
  </div>
</template>
<script>
import B from './B.vue'    //引入B组件
export default {
  name:'A',
  components:{      //注册B组件
    B
  },
  data(){
    return {
    }
  }
}
</script>

应该在子组件中使用插槽slot

<template>
  <div>
    <p>我是B组件</p>
    <!-- 插槽的使用方式 -->
    <slot></slot>     
  &lfeEcdJt;/div>
</template>
<script>
export default {
  name:'B',
  data(){
    return {
    }
  }
}
</script>

此时,再在子组件标签中写内容,生效

<template>
  <div>
    <p>我是A组件</p>
   <!-- 用B组件标签包裹内容,验证slot -->
    <B>123</B>
  </div>
</template>
<script>
import B from './B.vue'
export default {
  name:'A',
  components:{
    B
  },
  data(){
    return {
    }
  }
}
</script>

上面的例子,组件渲染时,子组件的会被替换成123(即指定内容)
插槽内可以包含任何模板代码,包括HTML;也可以放其他组件。

后备(默认)内容

有时为一个插槽设置具体的后备 (也就是默认的) 内容是很有用的,它只会在没有提供内容的时候被渲染。

在B组件中

<tandroidemplate>
  <div>
    <slot><p>我是B组件</p></slot>
  </div>
</template>

当在父组件中不指定内容
我是B组件会被渲染

当在父组件中指定内容

<B>
  <p>我是插槽内容</p>
</B>

则这个提供的内容将会被渲染从而取代后备内容

3.2 具名插槽

具名插槽就是起了名字的插槽。
有时我们需要多个插槽,例如当我们想使用某种通用模板:

<!-- B.vue -->
<template>
  <div>
    <header>
      <slot name="header"></slot>
    </header>
    <main>
      <slot></slot>
    </main>
    <footer>
      <slot name="footer"></slot>
    </footer>
  </div>
</template>

一个不带 name 的 出口会带有隐含的名字“default”,即匿名插槽。

在向具名插槽提供内容时,可以在一个 元素上使用 slot 指令,并以 slot 的参数的形式提供其名称(当然也可以直接放在标签中,如

):

<!-- A.vue -->
<template>
  <div>
    <p>我是A组件</p>
    <B>
      <template slot="header">
        <p>我是header部分</p>
      </template>
      <p>我是main(默认插槽)部分</p>
      <template slot="footer">
        <p>我是footer部分</p>
      </template>
    </B>
  </div>
</template>

现在 元素中的所有内容都将会被传入相应的插槽。任何没有被包裹在带有slot 的中的内容都会被视为默认插槽的内容。

3.3 作用域插槽

3.3.1 使用

让父组件的插槽内容可以访问子组件中的data数据
子组件

<!-- B.vue -->
<template>
 js <div>
    <p>我是B组件</p>
    <!-- 绑定在插槽元素上的attribute为插槽prop -->
    <slot :obj="obj"></slot>
  </div>
</template>
<script>
export default {
  name:'B',
  data(){
    return {
      obj:{
        firstName:'leo',
        lastName:'lion'
      }
    }
  }
}
</script>

父组件

<tewww.chinasem.cnmplate>
  <div>
    <p>我是A组件</p>
    <B>
		<template slot-scope="data">
		          {{data.obj.lastName}}
		 </template >
    </B>
  </div>
</template>

在这个例子中,我们选择将包含所有插槽 prop 的对象命名为 data,但你也可以使用任意你喜欢的名字。

到此这篇关于Vue中插槽slot的使用示例详解的文章就介绍到这了,更多相关Vue插槽slot使用内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于Vue中插槽slot的使用示例详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154673

相关文章

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

Kotlin 枚举类使用举例

《Kotlin枚举类使用举例》枚举类(EnumClasses)是Kotlin中用于定义固定集合值的特殊类,它表示一组命名的常量,每个枚举常量都是该类的单例实例,接下来通过本文给大家介绍Kotl... 目录一、编程枚举类核心概念二、基础语法与特性1. 基本定义2. 带参数的枚举3. 实现接口4. 内置属性三、

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

springboot整合mqtt的步骤示例详解

《springboot整合mqtt的步骤示例详解》MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,适用于物联网设备之间的通信,本文介绍Sprin... 目录1、引入依赖包2、yml配置3、创建配置4、自定义注解6、使用示例使用场景:mqtt可用于消息发