Vue--》动态组件和插槽的使用讲解

news2024/9/22 23:29:19

目录

动态组件

keep-alive使用

keep-alive的include和exclude属性

插槽


动态组件

动态组件指的是动态切换组件的显示与隐藏,vue提供了一个内置的<component>组件,专门用来实现动态组件的渲染。什么意思呢?接着往下看:

那么内置的<component>组件是什么情况呢?component 是可以作为标签使用的,其作用组件的占位符。当然其作为标签直接使用是会报错的,还需要搭配属性值 is其表示要渲染的组件的名字。如下:

那么如何去动态的切换组件呢?写一个简单的button按钮实现即可,如下:

keep-alive使用

当我们动态的去创建组件时,这一点和 v-if 很相似,改变组件会直接将改变之前的组件的数据销毁掉。如下:

我们给Left组件设置 +1 按钮,来表示其数据:

用生命周期函数来监听组件的创建和销毁:

那我们如何在动态创建组件的同时还能暴露组件之前的数据呢?这里就需要借助keep-alive。

keep-alive对应的生命周期函数

当组件被缓存时,会自动触发组件的deactivated生命周期函数。

当组件被激活时,会自动触发组件的activated生命周期函数。

created(){
    console.log('Left组件被"创建"了');
},
destroyed(){
    console.log('Left组件被"销毁"了');
},

// 当组件第一次被创建的时候,既会创建created生命周期,也会执行activated生命周期
// 当组件被激活时,只会触发activated生命周期,不再触发created。因为组件没有被重新创建
activated(){
    console.log('组件被激活了,activated');
},
deactivated() {
    console.log('组件被缓存了,deactivated');
},

keep-alive的include和exclude属性

include属性用来指定:只有名称匹配的组件会被缓存。多个组件名之间使用英文的逗号分隔:

exclude属性用来指定:只有名称匹配的组件“不“会被缓存。多个组件名之间使用英文的逗号分隔:

插槽

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

vue官方规定:每一个slot插槽,都要有一个name名称,如果省略了slot的name属性,则有一个默认名称叫做 default ,默认情况下,在使用组件的时候,提供的内容都会被填充到名字为default的插槽之中。

如果要把内容填充到指定名称的插槽中,需要使用 v-slot:这个指令,v-slot:后面要跟上插槽的名字,注意:v-slot:指令不能直接用在元素身上,必须用在template标签上。当然这个指令也是有简写形式:# 即可。template:这个标签是一个虚拟标签,只其到包裹性质的作用,不会被渲染为任何实质性的 html 元素。

后备内容:封装组件时,可以为预留的<slot>插槽提供后备内容(默认内容)。如果组件的使用者没有为插槽提供任何内容,则后备内容会生效。

作用域插槽:在封装组件时,为预留的<slot>提供属性对应的值。如下:

当然上面的作用域插槽数据明显是写死了,那么可以将数据动态存储在data里面吗?答案是可以的

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

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

相关文章

类和对象之 封装 继承 与 多态

1.进行类继承的前提是我们要有两个类&#xff0c;且已经确定好了这两个类谁为父类谁为子类 2.先创建父类然后再创建子类 3.创建子类的时候我们要使用继承语法&#xff0c;使用的方式是在创建子类时的第一条代码的最后面加上冒号 : 和父类的类名 4.继承的本质就是将父类中的…

[附源码]Python计算机毕业设计Django药品仓库及预警管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【Vue基本功】权限路由(1)

1 初始化项目 1.1 安装 yarn create vite … yarn 依赖&#xff1a; yarn add axios yarn add vuexnext vue-router4 -D yarn add typesvue-router -D vuex有ts支持&#xff0c;所以不需要安装类型文件 1.2 配置 1.2.1 别名 引入path时&#xff0c;发现有警告&#x…

Spring MVC 高级框架的核心

目录 1. 什么是 Spring MVC 1.1 如何理解 MVC 1.2 Spring MVC 和 MVC 的关系 2. 如何学习 Spring MVC 2.1 将浏览器和服务器连接起来 2.1.1 RequestMapping, GetMapping, PostMapping 三个注解的区别 2.2 在程序中获取前端传递过来的参数 2.2.1 传递单个参数 2.2.2 传…

CSS 实现音频loding动画

前言 &#x1f44f;实现一个音频loading动画还蛮有趣的&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义css变量&#xff1a;父容器高度为–h&#xff0c;可以动态设置loading的高度 :root {--h: 80px;}父…

遗传算法在机器人路径规划中的应用研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 机器人运动规划是移动机器人导航的核心技术之一。40多年来,运动规划技术发展迅速,涌现出了许多规划算法,但因为环境描述方式差异…

JavaScript -- 数组及对象解构赋值方法总结

文章目录1 数组解构赋值1.1 保留默认值1.2 接受剩余的所有参数1.3 对函数执行结果解构1.4 交换两个变量的值1.5 二维数组结构2 对象的解构2.1 声明对象同时解构对象2.2 先声明再解构2.3 解构不存在的属性2.4 设置解构别名2.5 设置解构默认值1 数组解构赋值 案例&#xff1a;将…

红队隧道应用篇之Netsh端口转发

简介 netsh是从Windows 2000开始就有的一个用于配置网络设备的命令行工具 其中netsh interface portproxy是一个配置网络代理的命令, 可以配置ipv4或ipv6的端口转发代理以及双向端口转发代理 学习隧道应用前必须了解的知识:https://blog.csdn.net/xf555er/article/details/1…

LeetCode刷题复盘笔记—一文搞懂完全背包之279. 完全平方数问题(动态规划系列第十五篇)

今日主要总结一下动态规划完全背包的一道题目&#xff0c;279. 完全平方数 题目&#xff1a;279. 完全平方数 Leetcode题目地址 题目描述&#xff1a; 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整…

技术开发93

技术开发93 业务内容&#xff1a; . 马达零部件 . 汽车零部件 . 音响用零部件 . 农用机零部件 . 建筑模具 公司简介&#xff1a; 资本金&#xff1a;2000万日元&#xff08;约120万元人民币&#xff09; 员工数&#xff1a;17名 成立时间&#xff1a;1923年4月 资格认…

Linux文件及目录管理操作

Linux文件及目录管理实验目的及要求1.了解Linux文件与目录的访问权限2.熟悉Linux文件与目录的打包和压缩3.掌握Linux文件与目录的相关管理操作实验原理实验步骤对文件管理和压缩归档进行了解&#xff0c;具体步骤如下&#xff1a;1.用mkdir命令在"/root"目录下创建一…

[附源码]Python计算机毕业设计Django线上社区管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

C#语言入门详解 第十七讲 (字段、属性、索引器、常量)

C#语言入门详解 第十七讲 &#xff08;字段、属性、索引器、常量&#xff09; 在C#语言中&#xff0c;类&#xff08;或结构体&#xff09;包含以下成员&#xff1a; 什么是字段 字段&#xff08;field&#xff09;是一种表示与对象或类型&#xff08;类与结构体&#xff0…

【传输层】概述、复用分用、UDP详解、UDP校验

文章目录传输层概述----为应用层服务TCP靠谱--大文件、时延大 与UDP不可靠--小文件、时延小传输层的寻址与端口------复用---应用层所有进程通过传输层再传输到网络层----------分用---------传输层从网络层收到数据后交付给指定应用程序套接字------Socket---IP&#xff1a;端…

足球冷知识:球队之间比分相同,怎么排名?

在足球比赛的小组赛中&#xff0c;往往会有胜、平、负三种结局&#xff0c;球队胜一场得三分、平一场得一分、输一场不得分。 如果球队积分相同&#xff0c;排名的时候&#xff0c;还会通过净胜球&#xff08;就是进球数减丢球数&#xff09;、相互交战的成绩、总进球数、球队累…

2023年天津美术学院专升本专业课报名缴费时间及考试安排

天津美术学院2023 年高职升本专业考试报名考试公告 一、报名时间 2022 年 12 月 9 日 10:00 至 12 月 12 日 17:00&#xff08;逾期不予补报&#xff0c;考生也不得再修改报名信息&#xff09; 注&#xff1a;每日 23:00 至次日 7:00 是报名系统维护时间&#xff0c;届时报名相…

搭建Python虚拟环境

搭建Python虚拟环境虚拟环境概述安装虚拟环境Windows环境下Linux环境下创建虚拟环境使用虚拟环境虚拟机环境下安装包PyCharm中使用虚拟环境虚拟环境 概述 为什么需要搭建Python的虚拟环境&#xff1f; 正常情况下&#xff0c;在一台电脑上, 想开发多个不同的项目, 需要用到同…

【GNN基础学习】图模块基本定义 || 图的邻接矩阵 || GNN中常见任务有哪些? || GNN消息传递方法 || 多层GCN有什么作用?

声明:仅学习使用~ 目录 一、图模块基本定义二、图的 邻接矩阵三、GNN中常见任务:点级别 任务、边级别 任务、图级别 任务。四、消息传递方法五、多层GCN的作用一、图模块基本定义 点、边、图。 对点的特征、边的特征、图的特征 等都要做重构。 借助于 图 这一结构,对事物…

39. 组合总和

39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重…

C++并发编程

目录一、并发编程相关的基础概念1、操作系统&#xff08;Linux&#xff09;2、任务和通信3、多进程和多线程4、C中的多线程发展史二、pthread线程使用讲解和实战1、pthread基本使用2、线程的分离3、线程属性4、关于线程的几个值得注意的点三、线程的同步之互斥锁、读写锁、非阻…