Vue学习:18.Vue插槽
Vue 中的插槽(slot)是一种灵活的机制,用于在父组件中将内容传递到子组件的特定位置。它允许我们在子组件中定义可以在父组件中传递任意内容的“插槽”,从而实现更灵活的组件化。
在Vue中,插槽主要有以下几种类型:
默认插槽(Default Slot): 这是最基础的插槽类型。在子组件模板中使用
<slot>
标签作为占位符,父组件则可以在使用该子组件时,在其标签内插入任何想要展示的内容。例如:子组件(ChildComponent.vue):
<template>
<div>
<h2>这里是子组件标题</h2>
<slot></slot> <!-- 默认插槽位置 -->
</div>
</template>
父组件(ParentComponent.vue):
<template>
<child-component>
<p>这是来自父组件的内容,将显示在子组件的默认插槽位置。</p>
</child-component>
</template>
2. 具名插槽(Named Slots): 当子组件需要多个插槽时,可以为每个插槽指定一个名称,以便父组件更精确地控制内容的分布。在子组件中使用 <slot name="slotName">
定义具名插槽,父组件则使用 v-slot:slotName
(或简写为 #slotName
从 Vue 2.6 开始)将内容分配到相应的插槽。例如:
子组件(ChildComponent.vue):
<template>
<div>
<h2>这里是子组件标题</h2>
<slot name="header"></slot>
<main>
<slot></slot> <!-- 默认插槽 -->
</main>
<footer>
<slot name="footer"></slot>
</footer>
</div>
</template>
父组件(ParentComponent.vue):
<template>
<child-component>
<template v-slot:header>
<h3>这是头部插槽内容</h3>
</template>
<p>这是主内容区域,将显示在子组件的默认插槽。</p>
<template v-slot:footer>
<p>这是底部插槽内容</p>
</template>
</child-component>
</template>
当子组件需要向插槽内容传递数据时,可以使用作用域插槽(Scoped Slots)。子组件通过 <slot>
元素的 v-bind
向父组件传递数据,父组件则在 v-slot
内部创建一个函数来接收这些数据,并根据这些数据渲染插槽内容。在 Vue 3 中,作用域插槽已被更强大的“插槽props”所替代。
Vue 2 中的作用域插槽示例:
子组件(ChildComponent.vue):
<template>
<ul>
<li v-for="item in items">
<slot :item="item"> <!-- 传递 item 数据给作用域插槽 -->
{{ item.text }} <!-- 默认内容,当父组件未提供插槽内容时使用 -->
</slot>
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [{ text: 'Item 1' }, { text: 'Item 2' }]
}
}
}
</script>
父组件(ParentComponent.vue):
父组件中通过【v-slot:item=' '】接收来自子组件的数据,可简写为:【#item=' '】
<template>
<child-component>
<template v-slot:item="slotProps">
<strong>{{ slotProps.item.text }}</strong> <!-- 使用传递过来的数据 -->
</template>
</child-component>
</template>
总结来说,Vue中的插槽机制极大地增强了组件的灵活性与可定制性,使得父组件能够以声明式的方式控制子组件内部的内容布局,同时支持数据的传递,使得父子组件间能更有效地协同工作。
Vue学习:18.Vue插槽的更多相关文章
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- vue学习之vue基本功能初探
vue学习之vue基本功能初探: 采用简洁的模板语法将声明式的将数据渲染进 DOM: <div id="app"> {{ message }} </div> ...
- vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus
vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...
- Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明-Babel)
五 Vue学习-vue-cli脚手架学习(创建只选一个选项:Babel) 1. 项目目录说明 node_modules : 包管理文件夹 public : 静态资源 src : 源代码 gitign ...
- Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)
Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)
- Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)
(五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二 Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...
- Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发
===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...
- Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习
一 使用环境: windows 7 64位操作系统 二 IDE:VSCode/PyCharm 三 Vue.js官网: https://cn.vuejs.org/ 四 下载安装引用 方式1:直接 ...
- Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
文章目录 1.Vue中实现表单数据的收集 1.1 基础知识 1.2 代码实例 1.3 测试效果 1.4 额外插一嘴 1.Vue中实现表单数据的收集 1.1 基础知识 表单中常用的标签:input(输入 ...
- Vue学习之--------Vue中过滤器(filters)的使用(代码实现)(2022/7/18)
1.过滤器 1.1 概念 过滤器: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理). 语法: 1.注册过滤器:Vue.filter(name,callback) 或 new V ...
随机推荐
- 技术解读:Dragonfly 基于 P2P 的智能镜像加速系统 | 龙蜥技术
简介: 结合 Dragonfly 子项目 Nydus 进行按需加载可以最大限度提升镜像下载速度. 编者按:上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP . FTP 等应用层协议.然而 C ...
- 为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?
简介: 江娱互动是一家新兴的游戏企业,自 2018 年成立伊始,江娱互动就面向广阔的全球游戏市场,通过创造有趣的游戏体验,在竞争激烈的游戏市场占得一席之地.仅仅 2 年的时间,江娱互动就凭借 Topw ...
- Flink 1.13,面向流批一体的运行时与 DataStream API 优化
简介: 在 1.13 中,针对流批一体的目标,Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能,以及在 DataStream API 方面完善有限流作业的退出语义. 本文由 ...
- 顺丰科技 Hudi on Flink 实时数仓实践
简介: 介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi 来优化整个 job 状态的实践细节,以及未来的一些规划. 本文作者为刘杰,介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi ...
- WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
本文对新手友好.在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架.搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门 ...
- C++多态与虚拟:C++编译器对函数名的改编(Name Mangling)
如果函数名称都相同(也就是被overloaded),编译器在面对你的函数唤起动作时,究竟是如何确定调用哪个函数实体呢?事实上,编译器把所有同名的overloaded functions视为不同的函数, ...
- 一个库帮你轻松的创建漂亮的.NET控制台应用程序
前言 做过.NET控制台应用程序的同学应该都知道原生的.NET控制台应用程序输出的内容都比较的单调,假如要编写漂亮且美观的控制台输出内容或者样式可能需要花费不少的时间去编写代码和调试.今天大姚给大家分 ...
- SAP集成技术(八)成熟度模型
成熟度模型的目的在于使用模型和标准来评估当前的集成能力,并确定必须建立哪些能力,以达到期望的成熟度级别. 成熟度级别描述了一个特定主题复杂性对于某种方法或模型的成熟度.基于定义的需求和标准的分类,得出 ...
- gin 图片上传到本地或者oss
路由层 func registerCommonRouter(v1 *gin.RouterGroup) { up := v1.Group("upload") { up.POST(&q ...
- 01. go-admin的下载与启动
目录 一.介绍 二.新建空文件夹 三.获取后台源码并启动 1.下载编译go代码 2.配置命令到goland IDE ,debug启动 四.获取前端ui源码并启动 1.下载编译go代码 2.启动项目 * ...