Vue基础知识:插槽——默认插槽,插槽的后备内容,具名插槽,作用域插槽的认识与使用。(slot,#default,row的认识)

1.插槽的基本认识:

作用:让组件内部的一些结构支持自定义
插槽的分类:

1.默认插槽(组件内只能定制一处结构)

2.具名插槽(组件内可以定制多次结构)

简单而言:就是你希望封装一个组件,这个组件会在多个地方使用,但是每个使用的地方其中的内容部分又是不同的,这个时候你希望自定义,就会运用到插槽。

2.默认插槽的基础语法:

1.组件内需要定制的部分用<slot></slot>占位

2.使用组件时,<组件名></组件名>在标签内容传入替换slot的内容

下面进行代码演示:

使用slot标签占位

 完成的效果图:

此时我们又会面临一个问题,如果我不给自定义内容,就不会有任何内容,这样一片空白实在是不好看。那我们如何加默认值(设置默认内容) 

3.插槽的后备内容:

1.语法:在<slot>标签内,放置内容,作为默认显示内容。

作用:1.组件标签使用时没有传入内容,会slot会显示后备内容。

2.组件标签使用时有传入内容,则slot会被整体替换掉。

下面进行代码演示:

 效果图:

4.插槽—具名插槽(具有名字的插槽)

上面已经讲解了默认插槽,但是它有一个明显的缺点就是只能定制一个地方。而下面所说的具名插槽就可以很好的解决这个问题。

作用:一个组件内有多处结构,需要外部传入标签,进行定制。

1.具名插槽语法:

1.多个slot使用name属性区分名字

2.template配合v-slot:名字来分发对应的标签。

3.为了方便官方(v-slot:插槽名可以简写成#插槽名

下面进行代码演示:

效果图:

使用#插槽名演示

 5.作用域插槽(是插槽的一个传参语法):

作用域插槽:定义slot插槽的同时,可以传值的,给插槽上可以绑定数据,将来使用组件时可以使用。

使用场景:

1.父传子需要渲染内容时

2.比如我们常使用的删除、编辑等功能都需要当前项的id值,但是id属于组件内部的数据通过作用域插槽传值绑定,进而使用。

作用域插槽的基本使用步骤:

1.给slot标签,已添加属性的方式传值

2.所有添加的属性,都会被收集到一个对象中去。

3.在template中,通过“#插槽名字=“obj””接收(这里的obj可以自定义,就是个对象名而已),默认插槽名为default

下面进行代码演示:

组件:MyTable.vue代码:

<template><table class="my-table"><thead><tr><th>序号</th><th>姓名</th><th>年纪</th><th>操作</th></tr></thead><tbody><tr  v-for="(item,index) in data" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.age}}</td><td><!-- 1.给slot标签已添加属性的方式传值 --><slot :row="item" msg="测试文本"></slot><!-- 2.会将所用的属性添加到一个对象中去 --></td></tr></tbody></table>
</template><script>
export default {props: {data: Array,},
}
</script><style scoped>
.my-table {width: 450px;text-align: center;border: 1px solid #ccc;font-size: 24px;margin: 30px auto;
}
.my-table thead {background-color: #1f74ff;color: #fff;
}
.my-table thead th {font-weight: normal;
}
.my-table thead tr {line-height: 40px;
}
.my-table th,
.my-table td {border-bottom: 1px solid #ccc;border-right: 1px solid #ccc;
}
.my-table td:last-child {border-right: none;
}
.my-table tr:last-child td {border-bottom: none;
}
.my-table button {width: 65px;height: 35px;font-size: 18px;border: 1px solid #ccc;outline: none;border-radius: 3px;cursor: pointer;background-color: #ffffff;margin-left: 5px;
}
</style>

下面是App.vue代码:

 

<template><div><!-- :data="list"相当于父传子 --><MyTable :data="list"><!-- 注意要用<template></template>包裹 --><!-- 由于我们使用的是默认插槽,所以用default --><!-- 3.通过template #插槽名="变量名" 接收 --><template #default="obj"><button @click="del(obj.row.id)">删除</button></template></MyTable><MyTable :data="list2"><template #default="{row}"><!-- 这个对象也支持结构 --><button @click="show(row)">查看</button></template></MyTable></div>
</template><script>
import MyTable from './components/MyTable.vue'
export default {data () {return {list: [{ id: 1, name: '张小花', age: 18 },{ id: 2, name: '孙大明', age: 19 },{ id: 3, name: '刘德忠', age: 17 },],list2: [{ id: 1, name: '赵小云', age: 18 },{ id: 2, name: '刘蓓蓓', age: 19 },{ id: 3, name: '姜肖泰', age: 17 },]}},components: {MyTable},methods:{del(id){this.list=this.list.filter(item=>item.id!==id)},show(row){console.log(row)}}
}
</script>

效果图:

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

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

相关文章

09-数组的含义以及零长数组变长数组与多维数组

09-数组的含义以及零长数组变长数组与多维数组 文章目录 09-数组的含义以及零长数组变长数组与多维数组一、数组名的含义1.1 表示整个数组的首地址1.2 表示整个数组首元素的首地址 二、数组下标字符串常量 三、零长数组3.1 示例 四、变长数组4.1 示例 五、多维数组5.1 定义与初…

nodejs---fs模块,文件读写操作详解,自定义一个文件写入方法

fs模块导入 Node.js 同时支持 CommonJS 和 ES 模块系统&#xff08;自 Node.js v12 以来&#xff09; // 两种模块导入方式 import * as fs from fs;// Es6:这种方式需要在package.json中配置"type": "module" const fs require(fs);// commonJs:如果你…

golang协程工作池处理多任务示例

1. 工作方法实现 // 工作线程 // id : 线程号 // jobs : 任务通道 (chan) // results: 完成结果通道 (chan) func worker(id int, jobs <-chan int, results chan<- int) {//遍历任务for j : range jobs {fmt.Println("工作协程: ", id, "启动任务: &quo…

oracle中如何查询特定日期?

1. select last_day(to_date(20230101,YYYYMMDD)) from dual; select last_day(to_date(V_END_DATE,YYYYMMDD)) from dual; --查询任意一天 当月的最后一天 2. select to_char(to_date(20230101,YYYYMMDD)-1,YYYYMMDD) INTO V_START_DATE FROM DUAL; select to_char(to_dat…

vscode输出控制台中文显示乱码最有效解决办法

当VSCode的输出控制台中文显示乱码时&#xff0c;一个有效的解决办法是通过设置环境变量来确保编码的正确性。以下是解决方式&#xff1a; 首先&#xff0c;设置环境变量以修正乱码问题&#xff1a; 如果上述方法没有解决乱码问题&#xff0c;请继续以下步骤&#xff1a; 右键…

技术革命的十年:计算机、互联网、大数据、云计算与AI

近10年来&#xff0c;计算机、互联网、大数据、云计算和人工智能等技术领域发展迅速&#xff0c;带来了巨大的变革和创新。以下是各个领域的发展历史、现状、问题瓶颈、未来趋势以及可能的奇点。 计算机技术&#xff1a; 发展历史&#xff1a; 过去&#xff1a;过去十年间&am…

HTML5表单元素:重塑数据收集的艺术

HTML5为网页表单带来了革命性的变化&#xff0c;不仅增强了用户体验&#xff0c;也为开发者提供了更加强大和灵活的工具来收集和验证数据。本文将深入解析HTML5中新增和改进的表单元素&#xff0c;通过实例展示它们如何提升表单功能和交互性。 1. 新增表单元素 <input>…

SVN中trunk,branch,tag

SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤_svn 分支-CSDN博客 场景: 项目的1.0版本已经完成开发,测试,并上线了. 接到了新需求,要修改多个文件的代码. 你写了一段时间的时候,用户或测试人员反馈, 1.0版本有重大bug要修复,修复好后立刻上线. 此时应该怎么…

RocketMQ的安装

首先到RocketMQ官网下载页面下载 | RocketMQ (apache.org)&#xff0c;本机解压缩&#xff0c;作者在这里用的是最新的5.2.0版本。按照如下步骤安装。 1、环境变量配置rocket mq地址 ROCKETMQ_HOME D:\rocketmq-all-5.2.0-bin-release 在变量path中添加”%ROCKETMQ_HOME%\bi…

免费数据库同步软件

在信息化日益发展的今天&#xff0c;数据同步成为了企业和个人用户不可或缺的一部分。数据库同步软件作为数据同步的重要工具&#xff0c;能够帮助我们实现不同数据库系统之间的数据复制和同步&#xff0c;确保数据的一致性和完整性。本文将介绍几款免费数据库同步软件&#xf…

ES5/ES6 的继承除了写法以外还有什么区别?

一、主要区别 ES5 的继承实质上是先创建子类的实例对象&#xff0c; 然后再将父类的方法添加 到 this 上&#xff08;Parent.apply(this)&#xff09; . ES6 的继承机制完全不同&#xff0c; 实质上是先创建父类的实例对象 this&#xff08;所以必 须先调用父类的 super()方法…

C#根据反射生成sql语句(Update语句)

今天有人问我Update语句怎么搞&#xff0c;想了一下大致思路就是用特性去标识一下&#xff0c;主键&#xff0c;然后再去用反射的方式拼sql语句。 在C#中&#xff0c;我们可以使用特性&#xff08;Attributes&#xff09;来标识一个类的属性作为该类的主键&#xff08;Primary…

旅游卡系统开发搭建

旅游卡系统的开发搭建是一个涉及多个步骤和关键因素的复杂过程。以下是关于旅游卡系统开发搭建的详细步骤和要点&#xff1a; 一、需求分析 目标用户调研&#xff1a;深入调研目标用户&#xff0c;了解他们的需求和痛点&#xff0c;从而确定系统的功能和特点。功能确定&#…

数据分析必备:一步步教你如何用Pandas做数据分析(20)

1、Pandas 分类数据 Pandas 分类数据的操作实例 数据通常实时包含重复的文本列。性别&#xff0c;国家/地区和代码等功能始终是重复的。这些是分类数据的示例。 分类变量只能采用有限的且通常是固定数量的可能值。除固定长度外&#xff0c;分类数据可能还具有顺序&#xff0c;…

elasticsearch安装与使用(1)-使用docker安装Elasticsearch

ES的优点&#xff1a; 1、分布式准实时2、提供REST风格的API接口&#xff0c;是用户可解借助任何语言使用https对ES执行请求来完成搜索任务&#xff1b;3、提供聚合功能 1、Elasticsearch安装 docker network create elastic docker pull docker.elastic.co/elasticsearch/e…

MySQL入门学习-聚合和分组.计数(COUNT()函数)

在 MySQL 中&#xff0c;聚合和分组是用于对数据进行汇总和分析的强大功能。聚合函数可以计算数据的总和、平均值、最小值、最大值等统计信息&#xff0c;而分组则可以将数据按照特定的字段进行分组&#xff0c;然后对每个分组进行聚合计算。计数&#xff08;COUNT() 函数&…

【MYSQL系列】mysql中text,longtext,mediumtext区别

【MYSQL系列】mysql中text,longtext,mediumtext区别 在MySQL数据库中&#xff0c;TEXT、LONGTEXT和MEDIUMTEXT都是用于存储大量文本数据的字段类型。它们之间的主要区别在于可存储的数据大小和性能方面的差异。本文将探讨这些字段类型的特点、使用场景和一些最佳实践。 TEXT类…

贪心(不相交的开区间、区间选点、带前导的拼接最小数问题)

目录 1.简单贪心 2.区间贪心 不相交的开区间 1.如何删除&#xff1f; 2.如何比较大小 区间选点问题 3.拼接最小数 1.简单贪心 比如&#xff1a;给你一堆数&#xff0c;你来构成最大的几位数 2.区间贪心 不相交的开区间 思路&#xff1a; 首先&#xff0c;如果有两个…

代码随想录算法训练营第三十二天|LeetCode122 买卖股票的最佳时机Ⅱ、LeetCode55 跳跃游戏、LeetCode45 跳跃游戏Ⅱ

题1&#xff1a; 指路&#xff1a;122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 基本思路&#xff1a;一天买入一天卖出&#xff0c;得到每部分正利润作为局部最优解&#xff0c;例如prices[7, 1, 5, 3, 6, 4]中&#xff0c;…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)

目录 12.5 RestClient操作索引库 12.5.1创建库 12.5.2 删除索引库 12.5.3 判断是否存在 12.6 RestClient操作文档 12.6.1 新增文档 12.6.2 查询文档 12.6.3 修改文档 12.6.4 删除文档 12.6.5 批量导入文档 12.5 RestClient操作索引库 酒店mapping映射 ​PUT /hotel{&…