Vue3——第十一章(内置组件:KeepAlive、Transition、TransitionGroup)

news2025/1/17 5:54:55

一、KeepAlive

  • <KeepAlive> 是一个内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例。
1、基本使用
  • 默认情况下,一个组件实例在被替换掉后会被销毁。
  • 这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时,会创建一个只带有初始状态的新实例。
  • 要解决这个问题,我们可以用 <KeepAlive>内置组件将这些动态组件包装起来:
    在这里插入图片描述
  • 现在,在组件切换时状态也能被保留了
2、包含/排除
  • <KeepAlive>默认会缓存内部的所有组件实例,但我们可以通过 include 和 exclude prop 来定制该行为。
  • 这两个 prop 的值都可以是一个以英文逗号分隔的字符串、一个正则表达式,或是包含这两种类型的一个数组:
    在这里插入图片描述
  • 它会根据组件的 name 选项进行匹配,所以组件如果想要条件性地被 KeepAlive 缓存,就必须显式声明一个 name 选项。
    在这里插入图片描述
3、缓存实例的生命周期
  • 当一个组件实例从 DOM 上移除但因为被 <KeepAlive> 缓存而仍作为组件树的一部分时,它将变为不活跃状态而不是被卸载。

  • 当一个组件实例作为缓存树的一部分插入到 DOM 中时,它将重新被激活。

  • 一个持续存在的组件可以通过 onActivated()onDeactivated() 注册相应的两个状态的生命周期钩子:
    在这里插入图片描述

  • onActivated 在组件挂载时也会调用,并且 onDeactivated 在组件卸载时也会调用。

  • 这两个钩子不仅适用于 <KeepAlive> 缓存的根组件,也适用于缓存树中的后代组件。

4、最大缓存实例数
  • 我们可以通过传入 max prop 来限制可被缓存的最大组件实例数。
  • <KeepAlive> 的行为在指定了 max 后类似一个 LRU 缓存:如果缓存的实例数量即将超过指定的那个最大数量,则最久没有被访问的缓存实例将被销毁,以便为新的实例腾出空间。
    在这里插入图片描述

二、Transition

  • Vue 提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画:<Transition>、<TransitionGroup>
  • <Transition> 会在一个元素或组件进入和离开 DOM 时应用动画。
  • <TransitionGroup>会在一个 v-for 列表中的元素或组件被插入,移动,或移除时应用动画。
1、<Transition> 组件
  • <Transition> 是一个内置组件,这意味着它在任意别的组件中都可以被使用,无需注册。
  • 它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。
  • 进入或离开可以由以下的条件之一触发:v-if、v-show、由特殊元素 <component> 切换的动态组件
    在这里插入图片描述
    在这里插入图片描述
  • 当一个 <Transition> 组件中的元素被插入或移除时,会发生下面这些事情:
    在这里插入图片描述
2、基于 CSS 的过渡效果
  • 一共有 6 个应用于进入与离开过渡效果的 CSS class。
    在这里插入图片描述
  • 我们可以给 <Transition> 组件传一个 name prop 来声明一个过渡效果名:
    在这里插入图片描述
  • 对于一个有名字的过渡效果,对它起作用的过渡 class 会以其名字而不是 v 作为前缀。
  • 比如,上方例子中被应用的 class 将会是 fade-enter-active 而不是 v-enter-active。这个“fade”过渡的 class 应该是这样:
    在这里插入图片描述
3、JavaScript 钩子
  • 可以通过监听 <Transition> 组件事件的方式在过渡过程中挂上钩子函数:
    在这里插入图片描述
    在这里插入图片描述
  • 这些钩子可以与 CSS 过渡或动画结合使用,也可以单独使用。
4、可复用过渡效果
  • 得益于 Vue 的组件系统,过渡效果是可以被封装复用的。
    在这里插入图片描述
  • 现在 MyTransition 可以在导入后像内置组件那样使用了:
    在这里插入图片描述
5、出现时过渡
  • 如果你想在某个节点初次渲染时应用一个过渡效果,你可以添加 appear prop:
    在这里插入图片描述
6、过渡模式
  • 我们可能想要先执行离开动画,然后在其完成之后再执行元素的进入动画。
  • 手动编排这样的动画是非常复杂的,好在我们可以通过向<Transition>传入一个 mode prop 来实现这个行为:
    在这里插入图片描述
7、动态过渡
  • <Transition> 的 props (比如 name) 也可以是动态的!这让我们可以根据状态变化动态地应用不同类型的过渡:
    在这里插入图片描述
8、组件间过渡
  • <Transition> 也可以作用于动态组件之间的切换:
    在这里插入图片描述

三、TransitionGroup

  • <TransitionGroup> 是一个内置组件,用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果。
1、和 <Transition> 的区别
  • 默认情况下,它不会渲染一个容器元素。但你可以通过传入 tag prop 来指定一个元素作为容器元素来渲染。
  • 过渡模式在这里不可用,因为我们不再是在互斥的元素之间进行切换。
  • 列表中的每个元素都必须有一个独一无二的 key attribute。
  • CSS 过渡 class 会被应用在列表内的元素上,而不是容器元素上。
2、进入 / 离开动画
  • 这里是<TransitionGroup>对一个 v-for 列表添加进入 / 离开动画的示例:
    在这里插入图片描述
    在这里插入图片描述
3、移动动画
  • 上面的示例有一些明显的缺陷:当某一项被插入或移除时,它周围的元素会立即发生“跳跃”而不是平稳地移动。
  • 我们可以通过添加一些额外的 CSS 规则来解决这个问题:
    在这里插入图片描述
4、渐进延迟列表动画
  • 通过在 JavaScript 钩子中读取元素的 data attribute,我们可以实现带渐进延迟的列表动画。
  • 首先,我们把每一个元素的索引渲染为该元素上的一个 data attribute:
    在这里插入图片描述
  • 接着,在 JavaScript 钩子中,我们基于当前元素的 data attribute 对该元素的进场动画添加一个延迟。以下是一个基于 GreenSock library 的动画示例:
    在这里插入图片描述
  • 效果
    在这里插入图片描述

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

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

相关文章

elementui el-table表格实现翻页和搜索均保持勾选状态(后端分页)

需求&#xff1a;不管是页面切换还是通过搜索获取数据&#xff0c;都要保持已选中的行保持勾选状态&#xff0c;同时将选中行的内容以标签的形式显示出来&#xff0c;当点击关闭标签时可以对应取消选中状态&#xff0c;点击行中的任意位置也可以切换选中状态&#xff0c;单独勾…

柳叶刀重磅:30年来首个基于新机制的降压药,可持续降压近一年

全球范围内高血压患者约有13亿&#xff0c;其中10%的患者&#xff08;超过1亿&#xff09;为难治性高血压&#xff0c;即接受了3种以上不同种类的降压药治疗后&#xff0c;血压仍然控制不佳。长期不受控的高血压可能对心脏和血管均会造成损伤&#xff0c;进而增加患者发生心脏病…

Learning Saliency Propagation for Semi-Supervised Instance Segmentation

Abstract 实例分割对于建模和注释来说都是一项具有挑战性的任务。由于注释成本高&#xff0c;建模变得更加困难&#xff0c;因为监督的数量有限。我们的目标是利用大量的检测监督来提高现有实例分割模型的准确性。我们提出了ShapeProp&#xff0c;它学习激活对象检测中的显著区…

【CocosCreator入门】CocosCreator下载安装 | 使用Cocos DashBoard下载各个版本的CocosCreator

Cocos Creator 从 v2.3.2 开始接入了全新的 Dashboard 系统&#xff0c;能够同时对多版本引擎和项目进行统一升级和管理&#xff01;Cocos Dashboard 将做为 Creator 各引擎统一的下载器和启动入口&#xff0c;方便大家升级和管理多个版本的 Creator。此外还集成了统一的项目管…

进程间通信的方式(附代码分析)

进程间通信的方式 1. 进程间通信的几种方式 管道 比如 ls | grep 1;也就是将 进程 ls 拿到的结果作为 grep 1 这个进程的输入。实现了进程间的通信。 消息队列 消息队列就是我们的内核给我们创建的一种消息队列。我们可以往其中发送消息&#xff0c;也可以从其中接收消息。 …

C语言实现有序序列判断

一个数组&#xff0c;判断是否有序看上去很简单&#xff0c;有很多种方法。但实际上有一个很严重的问题&#xff0c;就是重复数会影响判断结果。 我这里提供的思路是取连续的三个数进行比较&#xff0c;a, b, c&#xff0c;假设一共n个元素&#xff0c;数组名是arr&#xff0c…

阿里云Imagine Computing创新技术大赛决赛启幕!

2023年1月&#xff0c;由阿里云与英特尔主办&#xff0c;阿里云天池平台、边缘云、视频云共同承办的“新算力 新体验”Imagine Computing创新技术大赛复赛圆满落幕。经过两个多月的激烈角逐&#xff0c;12支入围队伍&#xff0c;从海内外8个国家和地区的6900余支参赛队伍中脱颖…

转到结构化写作后的几点变化

或许是随着公司产品越来越多&#xff0c;公司的手册越来越复杂&#xff0c;用户越来越难找到需要的信息&#xff1b;或许是因为公司管理手册的使用者不满足于长篇大论的文字&#xff0c;希望能够获得只跟他相关的政策、程序等信息。 总之&#xff0c;公司决定从MS Word、非结构…

Pipeline机器学习模型串联

机器学习模型训练时使用 Pipeline 是一个加快效率的串联方法。Pipeline 处理机制就像是把所有模型塞到一个管子里&#xff0c;然后依次对数据进行处理&#xff0c;得到最终的分类结果。 # 模型串联 pipPipeline( [ # 所有模型写…

Matlab Spreadsheet Link安装(早期叫excllink)

我们在Matlab和Excel之间进行数据交互&#xff0c;需要用到Excel link这个组件&#xff08;这是早期的叫法&#xff09;&#xff0c;现在这个组件的名称叫做Spreadsheet Link&#xff0c;这个在我们安装Matlab的时候&#xff0c;要选择相应的组件来安装&#xff08;有可能我们刚…

find命令的常见用法

1.find 命令的常见用法 1.1 基础的打印操作 find命令默认接的命令是-print&#xff0c;它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔&#xff0c;这样就不会分行了。但是一定要注意&#xff0c;-print0针对的是\n转\0&#xff0c;如果查找的文件名本身就含有空格…

高一物理题整理

1 船过河问题 【分析及解答】 这个题的关键是如何理解船的速度&#xff0c;题目假设船的速度是不变的&#xff0c;也就是一直是v2v_2v2​。 列方程如下&#xff1a; {120v1∗10dv2∗10dv2sin⁡θ∗12.5v1v2cos⁡θ\left\{\begin{array}{l} 120 v_1 * 10 \\ d v_2 * 10 \\ d …

【我的渲染技术进阶之旅】解决Cinema 4D制作的3D模型无法导入Blender的问题

文章目录一、问题描述二、分析问题2.1 查看material材质的mtl文件2.2 mtl文件介绍2.3 对比mtl文件和mtl语法并修改2.3.1 norm不对2.3.2 map_Ka、map_Kd 、map_Ks、map_Bump 的格式不对2.5 重新导出obj格式和mtl文件三、总结一、问题描述 今天UI输出了个3D模型给我&#xff0c;…

Spring是如何解决循环依赖的?

一、什么是循环依赖&#xff1f; 循环依赖&#xff1a;说白了就是一个或多个对象实例之间存在直接或间接的依赖关系&#xff0c;这种依赖关系构成了一个环形调用。 第一种情况&#xff1a;自己依赖自己的直接依赖 第二种情况&#xff1a;两个对象之间的直接依赖 第三种情况…

Android 深入系统完全讲解(11)

9 framework 内容组成 狭义的 framework&#xff0c;主要讲的就是 SystemServer 里面的所有服务&#xff0c;这些是在 framework&#xff0c; 而广义的就是包含了 rec&#xff0c;native 服务&#xff0c;系统 app 等一切分不出去的模块&#xff0c;所以 framework 要能做好&a…

睿尔曼 RM65-B 机械臂 WIN 示教软件测试

大家好&#xff0c;我是虎哥&#xff0c;最近开始接触机械臂&#xff0c;尤其是协作机械臂&#xff0c;小&#xff0c;轻、还价格便宜一点&#xff0c;由于我师兄弟强烈推荐的睿尔曼 RM65-B机械臂&#xff0c;所以总结一下自己的开箱测试经验&#xff0c;主要是在WIN下 示教器软…

Protobu编译本地环境搭建

1 windows下安装Protobuhttps://github.com/protocolbuffers/protobuf/releases2 安装cmakehttps://cmake.org/download/3选择选择你的VS版本4生成pb运行程序5 protoc --cpp_out生产pb文件将刚才编译后的libprotobufd.lib和protoc.exe拷贝到自己创建的项目下&#xff0c;按住sh…

express中间件

文章目录中间件定义一个最简单的中间件自定义中间件中间件的五个使用注意事项Express 基于 Connect 构建而成&#xff0c;因此&#xff0c;它也保持了重用中间件来完成基础任务的想法。这就意味着&#xff0c;通过 Express 的 API 方便地构建 Web 应用地同时&#xff0c;又不失…

基于vgg16和pytorch框架进行cifar10数据集的图像分类

vgg16网络模型的实现 这里只讲怎么实现 百度搜到vgg16的网络模型图&#xff0c;用pytorch框架进行实现 图是这样&#xff0c;用pytorch实现就行&#xff0c;pyotrch不太熟悉的话可以去看小土堆的视频 命名mode.py 也可以使用其他名字&#xff0c;在后面的train.py里面改一下也…

【C语言进阶】内存函数和结构体内存对齐

目录一.strerror函数1.错误码变量errno2.strerror函数的使用3.perror函数二.memcpy函数1.函数介绍2.模拟实现三.memmove函数1.函数介绍2.模拟实现四.结构体的内存对齐一.strerror函数 1.错误码变量errno 规定: C语言库函数如果出现运行错误&#xff0c;会将对应错误信息的错误…