vue学习笔记(八)——Vue组件-进阶(插槽、自定义指令)

一、Vue组件进阶

1.1 动态组件

多个组件使用同一个挂载点,并动态切换

效果如下:
1. 准备被切换的 - UserName.vue / UserInfo.vue 2个组件
2. 引入到UseDynamic.vue注册
3. 准备变量来承载要显示的"组件名"
4. 设置挂载点<component>,使用is属性来设置要显示哪个组件
5. 点击按钮 – 修改comName变量里的"组件名"
什么是动态组件?
        在同一个挂载点, 可以切换显示不同组件
如何使用动态组件?
        vue内置的component组件, 配合is属性
如何切换?
        改变is属性的值, 为要显示的组件名即可

1.2 组件缓存

问题1: 频繁的切换会导致组件频繁创建和销毁。
问题2: 性能不高。
问题3: 如何避免这个问题?        组件缓存

语法:

        Vue内置的keep-alive组件 包起来要频繁切换的组件
如何进行组件缓存?
        vue内置的keep-alive组件把要缓存的组件包起来
组件缓存好处?
        不会频繁的创建和销毁组件, 页面更快呈现

1.3 组件激活和非激活

扩展2个新的生命周期方法
方法名:
        activated – 激活时触发
        deactivated – 失去激活状态触发
如何知道缓存的组件是出现还是消失了?
        activated – 获得激活状态
        deactivated – 失去激活状态

1.4 组件插槽

目标:通过 slot 标签, 让组件内可以接收不同的标签结构显示
给组件插入什么标签, 组件就显示什么标签
语法口诀:
        1. 组件内用<slot></slot>占位
        2. 使用组件时<Pannel></Pannel>夹着的地方, 传入标签替换slot

当组件内某一部分标签不确定怎么办?
        用插槽技术
插槽具体如何使用?
        1. 先在组件内用slot占位
        2. 使用组件时, 传入具体标签插入
插槽运行效果?
        传入的标签会替换掉slot显示

1.5 组件进阶 - 插槽默认内容

如果外面不给传,想给个默认显示内容
口诀:
         <slot>内放置内容,作为默认显示内容
效果:
        不给组件传标签。slot内容原地显示
        给组件内传标签,则slot整体被换掉
如何给插槽设置默认显示内容?
        slot标签内写好默认要显示内容
什么时候插槽默认内容会显示?
        当使用组件并未给我们传入具体标签或内容时

1.6 组件进阶 – 具名插槽

目标:一个组件内有2处以上需要外部传入标签的地方
语法:
        1. slot使用name属性区分名字
        2. template配合v-slot:名字来分发对应标签( v-slot:可以简化成#
组件内多处不确定的标签如何做?
        slot占位,给name属性起名字来区分
        template配合v-slot:name分发要替换的标签
v-slot: 可以简化成什么?
        #

1.7 作用域插槽

准备工作:插槽显示默认内容
需求:在使用此组件时,不改右侧源码,是否使用defaultTwo值替换默认内容
目标:使用插槽时, 想使用子组件内变量
口诀:
        1. 子组件, 在slot上绑定属性和子组件内的值
        2. 使用组件, 传入自定义标签, 用template和v-slot="自定义变量名"
        3. scope变量名自动绑定slot上所有属性和值
                 scope = {row: defaultObj}
作用域插槽什么时候使用?
        使用组件插槽技术时,需要用到子组件内变量
作用域插槽使用口诀?
         子组件在slot身上添加属性和子组件的值
        使用组件处template配合v-slot=“变量名”
        收集slot身上的所有属性和值

1.8 组件进阶 – 作用域插槽使用场景

目标:自定义组件内标签+内容
准备MyTable.vue组件 – 内置表格, 传入数组循环铺设页面, 把对象每个内容显示在单元格里
准备UseTable.vue – 准备数据传入给MyTable.vue使用
例子:我想要给td内显示图片,需要传入自定义的img标签
        在MyTable.vue的td中准备<slot>占位,但是外面需要把图片地址赋予给src属性,所以在slot上把obj数据绑定
<template><div><table border="1"><thead><tr><th>序号</th><th>姓名</th><th>年龄</th><th>头像</th></tr></thead><thead><tr v-for="(item, index) in arr" :key="index"><td>{{ index }}</td><td>{{ item.name }}</td><td>{{ item.age }}</td><!-- <td>{{ item.headImgUrl }}</td> --><td><!-- 相当于 row: item --><slot :row="item">{{ item.headImgUrl }}</slot></td></tr></thead></table></div>
</template><script>
export default {props: ['arr']
}
</script>
        在UseTable使用MyTable的时候,template上v-slot绑定变量,传入img组件设置图片地址
<template><div><!-- <MyTabel :arr="list"><template></template></MyTabel> --><MyTabel :arr="list"><!-- scope = {row: item} --><template v-slot="scope"><a :href="scope.row.headImgUrl">{{ scope.row.headImgUrl }}</a></template></MyTabel><MyTabel :arr="list"><template v-slot="scope"><img :src="scope.row.headImgUrl" alt="" style="width:200px"></template></MyTabel></div>
</template><script>
import MyTabel from '@/components/06/MyTabel.vue'
export default {components: {MyTabel},data () {return {list: [{name: '小传同学',age: 18,headImgUrl: 'http://yun.itheima.com/Upload/./Images/20210303/603f2d2153241.jpg'},{name: '小黑同学',age: 25,headImgUrl: 'http://yun.itheima.com/Upload/./Images/20210304/6040b101a18ef.jpg'},{name: '智慧同学',age: 21,headImgUrl: 'http://yun.itheima.com/Upload/./Images/20210302/603e0142e535f.jpg'}]}}
}
</script>
我们为什么要使用作用域插槽?
        可以让组件更加灵活的适用于不同的场景和项目

二、自定义指令

2.1 自定义指令-注册

目标:获取标签,扩展额外的功能

全局注册 - 语法
局部注册 – 语法
我们为什么要自定义指令?
        在Vue内置指令满足不了需求时,可以自己定义使用

2.2 自定义指令-传值

目标:定义color指令-传入一个颜色,给标签设置文字颜色
语法
使用:
在标签上使用 v-color="'red'"
指令如何传值?
        v-指令名="值"
指令值变化触发什么方法?
        自定义指令的update方法而非inserted方法

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

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

相关文章

Elasticsearch:对时间序列数据流进行降采样(downsampling)

降采样提供了一种通过以降低的粒度存储时间序列数据来减少时间序列数据占用的方法。 指标&#xff08;metrics&#xff09;解决方案收集大量随时间增长的时间序列数据。 随着数据老化&#xff0c;它与系统当前状态的相关性越来越小。 降采样过程将固定时间间隔内的文档汇总为单…

VC++调试QT源码

环境&#xff1a;vs2017 qt 5.14.2 1&#xff1a;首先我们需要选择我们的源码路径 右键解决方案-》属性-》通用属性-》调试源文件-》在窗口内添加QT下载时的源码**.src文件夹**&#xff0c;这里最好把源码 D:\software\QT\path\5.14.2\Src 源文件里面的Src文件做一个备份出来…

<蓝桥杯软件赛>零基础备赛20周--第8周第2讲--排序的应用

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

MFC 绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线.

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…

百度收录批量查询工具,免费SEO优化排名工具

拥有一个在搜索引擎中得到良好收录的网站对于个人和企业都至关重要。而百度&#xff0c;作为中国最大的搜索引擎&#xff0c;其收录情况直接影响着网站的曝光度和流量。 百度搜索引擎是中文用户获取信息的重要途径之一。而在这个竞争激烈的网络环境中&#xff0c;了解自己网站…

重启路由器可以解决N多问题?

为什么重启始终是路由器问题的首要解决方案? 在日常的工作学习工作中,不起眼的路由器是一种相对简单的设备,但这仍然是我们谈论的计算机。 这种廉价的塑料外壳装有 CPU、随机存取存储器 (RAM)、只读存储器 (ROM) 和许多其他组件。 该硬件运行预装的软件(或固件)来管理连接…

vue之mixin混入

vue之mixin混入 mixin是什么&#xff1f; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…

严蔚敏数据结构题集 p18(2.25——2.30)(c语言代码实现)

目录 2.25假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素也依值递增有序排列。试对顺序表编写求C的算法。 2.26要求同2.25题。是对单链表编写求C的算法 2.…

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…

Swift下如何使用#if条件编译

一、OC使用条件编译 OC中可以使用宏定义&#xff0c;再使用条件编译 #define USER_CUSTOM使用 #if USER_CUSTOM //其他代码 #endif二、Swift使用条件编译 Swift 不像ObjectC一样&#xff0c;通过定义一个变量&#xff0c;然后使用**#if #endif** 方法。swift需要设置一下才能…

2 文本分类入门:TextCNN

论文链接&#xff1a;https://arxiv.org/pdf/1408.5882.pdf TextCNN 是一种用于文本分类的卷积神经网络模型。它在卷积神经网络的基础上进行了一些修改&#xff0c;以适应文本数据的特点。 TextCNN 的主要思想是使用一维卷积层来提取文本中的局部特征&#xff0c;并通过池化操…

搭建Appium工具环境

1、安装Java Development Kit&#xff08;JDK&#xff09; 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本&#xff0c;并根据指示下载安装程序。 安装JDK。运行下载的安…

Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序 当在一个测试类或多个测试模块下&#xff0c;用例数量较多时&#xff0c;unittest在执行用例 &#xff08;test_xxx&#xff09;时&#xff0c;并不是按从上到下的顺序执行&#xff0c;有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…

从薛定谔的猫——量子理论基础

在介绍量子理论基础之前&#xff0c;先介绍一下薛定谔的猫的故事&#xff0c;这个故事可能大多数朋友并不陌生&#xff0c;下面首先回顾一下&#xff1a; 薛定谔的猫是一个在量子力学中用来说明量子叠加态和测量结果的思维实验。这个思维实验最早由物理学家Erwin Schrdinger在1…

【技术干货】宇视IPC音频问题解决步骤

近期技术人员从宇视官网下载sdk进行二次开发时&#xff0c;在启动实时直播&#xff0c;并通过回调函数拿到流数据&#xff0c;发现没有音频流数据。 通过下面的数据发现&#xff0c;codeType此字段一直是28&#xff0c;代表的是H.264数据&#xff0c;但未没发现有音频的数据包…

【Altera】Cyclone10 FPGA DDR3使用

目录 开发板 硬件 框图 原理图 测试工具 DDR IP核配置 调试及遇到的问题 读写仲裁时序 问题1.拉高read后&#xff0c;wait一直没反应 问题2.DDR校正不过的一个可能性 延伸学习 开发板 Intel官方提供c10的开发套件&#xff1a;Intel Cyclone 10 GX FPGA Development …

替代升级虚拟化 | ZStack Cloud云平台助力中节能镇江公司核心业务上云

数字经济正加速推动各行各业的高质量升级发展&#xff0c;云计算是数字经济的核心底层基础设施。作为云基础软件企业&#xff0c;云轴科技ZStack 坚持自主创新&#xff0c;自研架构&#xff0c;产品矩阵可全面覆盖数据中心云基础设施&#xff0c;针对虚拟化资源实现纳管、替代和…

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法&#xff0c;可以使用findElements返回的数量判断&#xff1b;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

mysql-日期和时间函数

1.获取日期、时间 SELECT CURDATE(),CURTIME(),NOW(),UTC_DATE(),UTC_TIME() FROM dual; 2.日期与时间戳的转换 SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),FROM_UNIXTIME(UNIX_TIMESTAMP()) FROM dual; 3.获取月份、星期、星期数、天数等函数 SELECT YEAR(CURDATE()),MON…

【带头学C++】----- 九、类和对象 ---- 9.1 类和对象的基本概念----(9.1.4---9.1.6)

目录 9.1.4 设计立方体类 ​编辑 9.1.5 成员函数在类的外部实现 9.1.6 类在其他源文件的实现步骤&#xff08;实现类在不同文件的实现&#xff0c;后续引出构造函数&#xff09; 注意:类定义在同文件testclass.h中&#xff0c;而testclass.cpp是用来实现&#xff08;声明&…