Vue 3 中 slot插槽的使用方法

插槽,名字挺新奇。但不要被他的名字难住。其实就是父组件向子件件传递信息的一种手段。我们可以用这样的方法向子组件传值。

父组件(app.vue)

<template><MyCompoent :transData="{a:reactiveObj.a,breactiveObj.b,c}">
</template><script>import {reactive,ref} from 'vue';//批量定义响应式变量const reactiveObj = reactive(a,b)//单独定义的响应式变量const c = ref('c的值')//其他方式定义的能在标签用的...
</script>

子组件(MyComponent.vue)

<template><el-row><el-col>{{a}}</el-col></el-row>
</template><script>import {defineProps} from 'vue'const prop = defineProps({transData:{type:Object,default:()=>({})}})const {a,b,c}=prop.transData;
</script>

通过这样的方法可以向子组件传值。那么插槽呢,下面详细说一说。这种传值的方式。其实传的不是『值』,而是更多样的信息,如代码片段等。

1. 匿名插槽


匿名插槽是最基础的插槽类型,用于将父组件提供的内容插入到子组件指定的位置。

子组件(MyComponent.vue)

<template><div><h2>组件标题</h2><!-- 定义匿名插槽 --><slot></slot></div>
</template><script setup>
// 这里可以写组件的逻辑代码
</script>

在上述代码中,<slot></slot> 定义了一个匿名插槽,它是父组件内容的插入点。

父组件(App.vue)

<template><div><MyComponent><!-- 插入到匿名插槽的内容 --><p>这是插入到组件内部的内容</p></MyComponent></div>
</template><script setup>
import MyComponent from './components/MyComponent.vue';
</script>

2. 具名插槽

具名插槽允许在一个组件中定义多个插槽,并让父组件可以指定内容插入到哪个插槽中。

子组件(MyComponent.vue)

<template><div><header><!-- 具名插槽:header --><slot name="header"></slot></header><main><!-- 匿名插槽 --><slot></slot></main><footer><!-- 具名插槽:footer --><slot name="footer"></slot></footer></div>
</template><script setup>
// 组件逻辑代码
</script>

这里定义了三个插槽,一个匿名插槽和两个具名插槽(header 和 footer)。

父组件(App.vue)

<template><div><MyComponent><!-- 插入到具名插槽 header 的内容 --><template #header><h1>这是头部内容</h1></template><!-- 插入到匿名插槽的内容 --><p>这是主要内容</p><!-- 插入到具名插槽 footer 的内容 --><template #footer><p>这是底部内容</p></template></MyComponent></div>
</template><script setup>
import MyComponent from './components/MyComponent.vue';
</script>

在父组件中,使用 <template #插槽名> 语法来指定内容要插入到哪个具名插槽中,# 是 v-slot: 的缩写。


3. 作用域插槽

作用域插槽允许父组件在插入内容时访问子组件的数据。

子组件(MyComponent.vue)

<template><div><!-- 作用域插槽,向父组件暴露数据 --><slot :message="message"></slot></div>
</template><script setup>
import { ref } from 'vue';
const message = ref('这是子组件的数据');
</script>

在子组件中,通过 :message="message" 将 message 数据传递给插槽,这样父组件就可以使用这个数据。

父组件(App.vue)

<template><div><MyComponent><!-- 接收子组件传递的数据 --><template #default="{ message }"><p>{{ message }}</p></template></MyComponent></div>
</template><script setup>
import MyComponent from './components/MyComponent.vue';
</script>

在父组件中,使用 <template #default="{ 数据名 }"> 语法来接收子组件传递的数据,#default 用于匿名插槽的作用域插槽。

Vue 3 中 slot 的原理

编译阶段

当 Vue 编译器处理模板时,它会识别出 <slot> 标签,并将其转换为特定的虚拟节点(VNode)。对于具名插槽,会记录插槽的名称;对于作用域插槽,会记录传递的数据。

渲染阶段

在组件渲染时,Vue 会检查父组件是否为子组件的插槽提供了内容。如果提供了内容,就会将这些内容插入到对应的插槽位置。对于作用域插槽,会将子组件传递的数据注入到父组件提供的内容中。d

数据流动

  • 匿名插槽和具名插槽:数据流动是单向的,父组件向子组件传递内容,子组件无法直接向父组件传递内容。
  • 作用域插槽:数据流动是双向的,子组件可以向父组件传递数据,父组件可以使用这些数据来渲染内容。

通过这种方式,slot 机制使得组件可以灵活地接收和展示父组件提供的内容,提高了组件的复用性和可定制性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型中的召回次数是什么意思

大模型中的召回次数是什么意思 在大语言模型&#xff08;LLM&#xff09;和检索增强生成&#xff08;RAG&#xff09;系统中&#xff0c;召回次数&#xff08;Recall Count&#xff09;是一个重要的参数&#xff0c;它决定了在检索阶段从知识库中提取多少候选文档或片段。这个…

智能监控视频聚合平台,GB28181/RTSP/SIP/RTMP直播会议融合方案

全场景智能监控聚合平台&#xff1a;打破边界&#xff0c;赋能高效协同 在数字化转型加速的今天&#xff0c;海量视频监控设备、多样化的编码协议与复杂的业务场景&#xff0c;让企业面临跨系统整合难、资源调度效率低、协作响应慢等痛点。我们的智能监控聚合平台以技术创新为…

IP数据报报文格式

一 概述 IP数据报由两部分组成&#xff1a;首部数据部分。首部的前一部分是固定长度&#xff0c;一共20字节大小&#xff0c;是所有IP数据报文必须具有的&#xff1b;固定部分后面是一些可选字段&#xff0c;其长度是可变的。 二 首部固定部分各字段意义 &#xff08;1&…

【电子通识】案例:为什么电子产品制造过程中使用马克笔在FFC/FPC连接器打点进行标记

在电子产品制造过程中&#xff0c;使用马克笔在FFC/FPC连接完成后进行打点标记&#xff08;或类似目视化检查方法&#xff09;&#xff0c;是一种常见的“过程防错&#xff08;Poka-Yoke&#xff09;”手段&#xff0c;其核心目的是通过简单、直观的方式确保关键工序的执行质量…

Electron应用生命周期全解析:从启动到退出的精准掌控

一、Electron生命周期的核心特征 1.1 双进程架构的生命周期差异 Electron应用的生命周期管理具有明显的双进程特征&#xff1a; 主进程生命周期&#xff1a;贯穿应用启动到退出的完整周期渲染进程生命周期&#xff1a;与浏览器标签页相似但具备扩展能力进程间联动周期&#…

Oracle到MySQL实时数据互通:透明网关跨库查询终极方案

技术架构概述 节点类型IP示例Oracle数据库172.18.0.11透明网关节点192.168.5.20MySQL数据库10.10.8.100 提示&#xff1a;透明网关支持部署在Oracle服务器实现集中式管理 一、MySQL环境准备 1. ODBC驱动部署 从MySQL官网获取对应版本的ODBC驱动&#xff1a; # 企业版推荐使…

Linux中断处理流程

Linux中断处理流程 在Linux内核中&#xff0c;中断控制器管理硬件中断号到Linux中断号的映射&#xff0c;并通过中断描述符&#xff08;struct irq_desc&#xff09;进行管理。存储这种映射关系的方式取决于中断编号的连续性&#xff0c;具体实现如下&#xff1a; 1. 数组存储&…

JVM 如何打破双亲委派模型?

虽然双亲委派模型是 Java 类加载机制的推荐实现方式&#xff0c;但在某些情况下&#xff0c;为了实现特定的功能&#xff0c;可能需要打破双亲委派模型。以下是一些常见的打破双亲委派模型的方法和场景&#xff1a; 1. 重写 loadClass 方法 (不推荐): 原理&#xff1a; java.l…

Java 大视界 -- 基于 Java 的大数据隐私计算在医疗影像数据共享中的实践探索(158)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

logstash收集数据

防止ES的的I/O的压力过大&#xff0c;使用redis/kafka进行缓冲。 对redis的要求 Redis input plugin | Logstash Reference [8.17] | Elastic 一般企业要求的架构 我实现的架构 filebeat把数据传给logstash 配置好filebeat把收集到的数据输入到redis 然后执行命令&#xff0…

使用ModbusRTU读取松下测高仪的高度

使用C#通过Modbus RTU读取松下测高仪高度 1. 准备工作 1.1 硬件连接 确保松下测高仪支持Modbus RTU协议(需查阅设备手册确认)。通过RS-485或RS-232接口连接设备与计算机,可能需要USB转串口适配器。确认通信参数(波特率、数据位、停止位、奇偶校验),常见设置为:9600波特…

详解Http:在QT中使用Http协议

目录 一、HTTP 概述 1、主要特点 2、HTTP 方法 3、HTTP 状态码 4、HTTP 头部 5、HTTP的工作原理 二、在Qt中使用HTTP 1、发送简单的HTTP请求 2、发送POST请求 3、处理异步请求 4、使用QSslConfiguration进行HTTPS 5、 处理JSON响应 6、处理错误 三、总结 一、HTTP…

MAXKB部署,使用和注意事项

MaxKB Max Knowledge Base&#xff0c;是一款基于大语言模型和 RAG 的开源知识库问答系统&#xff0c;广泛应用于智能客服、企业内部知识库、学术研究与教育等场景。作为一款专注于知识库问答场景的软件产品&#xff0c;MaxKB 能够为企业的智能化进程注入新的动力&#xff0c;…

刚刚整理实测可用的股票数据API接口集合推荐:同花顺、雅虎API、智兔数服、聚合数据等Python量化分析各项数据全面丰富

在金融科技高速发展的今天&#xff0c;股票API接口已成为开发者、量化交易者和金融从业者的核心工具之一。它通过标准化的数据接口&#xff0c;帮助用户快速获取实时或历史市场数据&#xff0c;为投资决策、策略回测和金融应用开发提供支持。本文将深入解析股票API的核心功能、…

C笔记20250325

一:宏常量 和 const常量的区别 宏常量 使用预处理器指令#define来定义。 #define PI 3.14159 没有类型信息&#xff0c;仅仅是简单的文本替换。这意味着编译器不会对宏进行类型检查&#xff0c;可能导致潜在的错误。宏不是变量&#xff0c;不占用内存空间。它只是在预处理阶…

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗

docker - compose up - d`命令解释,重复运行会覆盖原有容器吗 docker - compose up - d 是一个用于管理 Docker 容器的命令,具体含义如下: 命令含义: up:用于创建、启动并运行容器,会根据 docker - compose.yml 文件中定义的服务配置来操作。-d:表示以“分离模式”(det…

03-SpringBoot3入门-配置文件(自定义配置及读取)

1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1&#xff09;User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置

噩梦终结&#xff1a;Flutter 配安卓、鸿蒙、iOS 真机调试环境 问题背景 很多开发者在配置 Flutter 项目环境时遇到困难&#xff0c;尤其是在处理 Android、鸿蒙和 iOS 真机调试环境时。卓伊凡最近接手了一个项目&#xff0c;发现很多“专业程序员”在环境搭建上花费了大量时…

进程状态:Linux的幕后指挥管理,穿越操作系统进程的静与动

文章目录 引言&#xff1a;进程的生命与状态&#xff1a;动与静的交响曲一、操作系统中的进程状态概述1.1 经典的进程状态模型1.2 进程状态转换图 二、Linux操作系统中的进程状态2.1 Linux进程状态的分类2.2 各状态的详细解释 2.3 Linux进程状态表2.4 使用ps查看进程状态三、进…

MOSN(Modular Open Smart Network)-05-MOSN 平滑升级原理解析

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN&#xff08;Modular O…