一分钟搞懂keep-alive_keep-alive组件只能包裹动态组件吗-程序员宅基地

技术标签: 前端  vue.js  javascript  

一、keep-alive是什么?

keep-alive是Vue的内置组件,使用它包裹动态组件时,会缓存不活动的动态组件实例,而不是销毁他们。keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。

二、具体使用

kepp-alive不但可以包裹缓存动态组件,还可以包裹缓存页面内容。

1.包裹缓存动态组件

如下图,我新建了3个组件,并把它渲染到页面上:

在这里插入图片描述
在这里插入图片描述
页面效果如下:
在这里插入图片描述
当我点击Live1,Live2,Live3时,三个组件之间会来回切换,并且显示的num值也会重新归零。
页面效果如下:
在这里插入图片描述
如果我们想在切换的时候,还保留组件的信息,这时就需要用到keep-alive。
在这里插入图片描述
下面我们再看效果。
在这里插入图片描述
这就实现了缓存不活动的组件实例。

我们再实际应用中,并不是需要缓存全部的组件,这时就需要用到keep-alive的白名单,黑名单,也就是keep-alive的include和exclude属性。
在这里插入图片描述
被加入黑名单的组件,就不会被缓存,相反的,被加入白名单的组件,就会被缓存。
在这里插入图片描述

2.包裹缓存页面

keep-alive同样也能包裹缓存页面,在实际开发中,如我们现在开发了一个商品商城项目,首页的数据是不是经常不变的,这时就可以用keep-alive将首页包裹,减少加载时间及性能消耗,提高用户体验性。
使用方法基本与包裹动态组件相同。使用时只需将其包裹在页面路由外,同样也可以利用白名单和黑名单决定哪些需要被缓存,哪些不需要被缓存。

在这里插入图片描述

注意:

使用时在data同级的位置加上name:’’。
在这里插入图片描述

三、使用keep-alive的好处

在组件切换过程中 把切换出去的组件保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。

四、延伸

被包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子: activated(组件激活时使用) 与 deactivated(组价离开时调用)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z12845464/article/details/122210704

智能推荐

KGCN---pytorch代码(2)---aggregator_kgcn代码实现-程序员宅基地

文章浏览阅读334次,点赞4次,收藏7次。将当前节点的向量(self_vectors)与邻居节点的向量(neighbor_vectors)+邻居关系(neighbor_relations)+以及用户嵌入(user_embeddings)+act(激活函数)结合。在得分张量的最后添加一个维度,将其形状从 [batch_size, -1, n_neighbor] 调整为 [batch_size, -1, n_neighbor, 1]结果是一个形状为 [batch_size, -1, n_neighbor] 的张量,表示每个邻居对当前节点的重要性得分。_kgcn代码实现

C++音频单声道、双声道之间的转换_双声道转单声道 c++-程序员宅基地

文章浏览阅读9.8k次,点赞10次,收藏19次。**本篇文件介绍 音频PCM数据的单声道、双声道之间的转换。 PCM数据格式是平面型和非平面型。 一般情况下使用的都是非平面,结构都是左右左右左右。**下面介绍函数参数:一、MonoToStereo函数。 单声道转双声道 参数1:资源buffer(双声道数据) 参数2:资源buffer大小(双声道数据大小) 参数2:转换后buffer(单声道数据) 代码_双声道转单声道 c++

人工智能与智慧城市的教育改革:新的学习体验-程序员宅基地

文章浏览阅读332次,点赞10次,收藏5次。1.背景介绍人工智能(Artificial Intelligence, AI)和智慧城市(Smart City)是当今世界最热门的话题之一。随着科技的发展,这两个领域在教育领域中也开始产生影响。本文将探讨人工智能与智慧城市如何改变教育,为我们提供了一种全新的学习体验。1.1 人工智能与教育的关系人工智能是一种计算机科学的分支,旨在创建智能体,即能够理解、学习和应对复杂任务的计算机程序。...

Froont!在线可视化响应式网页设计工具-程序员宅基地

文章浏览阅读1.4k次。Home / 热门下载 /神器下载 / 正文更多44今天要推荐的神器来自http://froont.com/ ,猜猜它有神马强悍的功能呢?是滴,进入网站后,你就会看到他说:“原来还可以在浏览器里设计网页,仅仅只需要拖放即可!”Froont是一个允许设计师在线设计响应式网页的工具,不需要程序员介入的设计编程工具,为设计师们提供了可视化

15:jquery正则表达式_jqzfz-程序员宅基地

文章浏览阅读167次。1:常见的字符介绍1:\ 转义字符 \n 匹配的就是换行 \ 匹配的是\ ( 匹配的是(。2 :^ 代表的是 开始符号 匹配字符的开始 或者正则表达式的开始。3: $ 代表的是 结束符号 匹配字符的结束 或者正则表达式的结束。4:* 代表的是匹配前面的字表达式零次或多次 zooo zo* 等价于 {0,}。5: + 代表的是匹配前面的字表达式一次..._jqzfz

android 动态加载 view,Android_Android动态添加View的问题解决方法,后台代码复制代码 代码如下:&n - phpStudy...-程序员宅基地

文章浏览阅读97次。Android动态添加View的问题解决方法后台代码private void ChangeView(){ly.removeAllViews();LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(R.layout.grid..._android addview 源码

随便推点

ThreadX 内部系统时钟服务_threadx如何确定系统时钟-程序员宅基地

文章浏览阅读2.5k次。ThreadX中,有两个函数可以获取和设置内部系统时钟服务,tx_time_get 获取当前时间。tx_time_set 设置当前时间。tx_time_get获取当前时间。原型ULONG tx_time_get(VOID)描述这项服务用来返回当前的内部系统时钟。每个定时节拍使内部系统时钟加1。系统时钟在初始化时被设置为0,同样可以被tx_time_set服务_threadx如何确定系统时钟

zsh + oh-my-zsh-程序员宅基地

文章浏览阅读115次。为什么80%的码农都做不了架构师?>>> ..._robbyrussell.zsh-theme:1: parse error near `<<<

springboot整合七牛服务器_import com.qiniu.storage.model.defaultputpolicy;-程序员宅基地

文章浏览阅读562次。1引入七牛依赖<dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0, 7.2.99]</version></dependency>..._import com.qiniu.storage.model.defaultputpolicy;

华为交换机配置时区_华为交换机使用NTP进行时间同步配置-程序员宅基地

文章浏览阅读3.1k次。system-view[~HUAWEI] sysname SwitchB[~HUAWEI] commit[~SwitchB] vlan batch 100[~SwitchB] interface vlanif 100[~SwitchB-Vlanif100] ip address 10.10.1.2 24[~SwitchB-Vlanif100] quit[~SwitchB] interface 10..._华为交换机配置ntp同步 csdn

python编辑器手机-QPython,一个在手机上运行Python的神器-程序员宅基地

文章浏览阅读2.4k次。之前安利过一款手机上运行Python的神器Termux,不过Termux的使用比较重,它实际是一款linux系统模拟器,安装好Termux后还要再安装python,并且是全命令行操作,一些读者使用起来有障碍。今天安利一款更友好的QPython。Qpython是一个Python引擎,只能运行在安卓系统上,相比Termux,它可以全图形界面操作,非常友好。内置了一个Python编辑器,可以直接在手机上..._termux的python与python有区别吗?

【ACM】acm文件输入输出测试小技巧_acm文件输入csdn-程序员宅基地

文章浏览阅读3.1k次。一:文件测试数据代码如下:#include &amp;lt;cstdio&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;iostream&amp;gt;using namespace std;int main(){ freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin); _acm文件输入csdn

推荐文章

热门文章

相关标签