基本用法介绍

Vue不同组件在进行切换时,组件会被重复销毁,重新渲染。使用 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

<template><div><button @click='show = !show'>切换显示</button><MyA v-if='show'>我是A组件</MyA><MyB v-else>我是B组件</MyB></div>
</template>

根据上述代码,默认渲染A组件,不渲染B组件。点击按钮时,销毁A组件,渲染B组件。再次点击按钮时,销毁B组件,渲染A组件。

<template><div><button @click='show = !show'>切换显示</button><keep-alive><MyA v-if='show'>我是A组件</MyA><MyB v-else>我是B组件</MyB></keep-alive></div>
</template>

添加后,默认渲染A组件,不渲染B组件。点击按钮时,A组件被缓存,渲染B组件。再次单击按钮时,缓存B组件,显示A组件。可见,该方式可节省性能。如,A组件和B组件均存在大量HTTP请求,如果重复切换按钮,请求也会重复进行,对网页的性能耗费较大;但是如果使用keep-alive进行缓存,相应的请求也都只会请求一次。

可选参数

include

字符串或正则表达式。只有名称匹配的组件会被缓存。

exclude

字符串或正则表达式。任何名称匹配的组件都不会被缓存。
include 和 exclude prop 允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示:

<!-- 逗号分隔字符串 -->
<keep-alive include="a,b"><component :is="view"></component>
</keep-alive><!-- 正则表达式 (使用 `v-bind`) -->
<keep-alive :include="/a|b/"><component :is="view"></component>
</keep-alive><!-- 数组 (使用 `v-bind`) -->
<keep-alive :include="['a', 'b']"><component :is="view"></component>
</keep-alive>
  • 匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。匿名组件不能被匹配。

max

数字。最多可以缓存多少组件实例。

<keep-alive :max="10"><component :is="view"></component>
</keep-alive>

最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。

用于缓存路由组件

<keep-alive><router-view/>
</keep-alive>

如果只需要其中一个组件缓存,比如cofather组件缓存时,我们就需要keep-alive的两个属性了

<keep-alive include="cofather"><router-view/>
</keep-alive>

我们还可以利用路由中的meta属性来控制

{path: '/cofather',name: 'cofather',meta:{keepAlive:true},component: () => import('../views/Cofather.vue')},

将cofather的路由规则中的meta添加keepAlive属性为true,也就是当前路由组件要进行缓存
keep-alive代码可以结合v-if进行包裹,如果meta中的keepAlive为true进行缓存,否侧不进行缓存,这样可以更灵活一些

  <keep-alive><router-view v-if="$route.meta.keepAlive" /></keep-alive><router-view v-if="!$route.meta.keepAlive" />

5min彻底搞懂vue中的keep-alive相关推荐

  1. 一文带你搞懂vue中的this.$nextTick

    文章目录 1.Vue.nextTick(callback) 使用原理 2.created和mounted对比 3.例子说明 4.实际遇到的问题:vue项目中 elementUI 中表格多选框默认选中, ...

  2. 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    帮你彻底搞懂JS中的prototype.__proto__与constructor(图解) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文 ...

  3. 这一篇彻底搞懂JS中的prototype、__proto__与constructor真的很好

    文章目录 1. 前言 2. _ _ proto _ _ 属性 3. prototype属性 4. constructor属性 5. 总结 提示:不要排斥,静下心来,认真读完,你就搞懂了!(可以先看一下 ...

  4. 彻底搞懂 JS 中 this 机制

    彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规 ...

  5. 15个示例让你搞懂Linux中的cd命令

    15个示例让你搞懂Linux中的cd命令 在Linux中,cd(更改目录)命令是新手和系统管理员最重要且使用最广泛的命令之一.对于没有头绪的管理员来说,cd是导航到其他目录以检查日志,执行程序/应用程 ...

  6. java 自旋锁_搞懂Java中的自旋锁

    轻松搞懂Java中的自旋锁 前言 在之前的文章<一文彻底搞懂面试中常问的各种"锁">中介绍了Java中的各种"锁",可能对于不是很了解这些概念的同学 ...

  7. 分分搞懂c#中的委托

    分分搞懂c#中的委托: 不说废话,不来虚的概念,不管代码是否有意义,看我的优化之路,你会理解委托了: 源代码1 public class test{//我们不管代码是否有意义,我们直接看代码重构和一步 ...

  8. 一文搞懂Qt中的颜色渐变(QGradient Class)

    一文搞懂Qt中的颜色渐变(QGradient Class) 1, 快速开始! Qt中与颜色渐变有关的类是QGradient 其中它又有三个子类:QLinearGradient.QRadialGradi ...

  9. (转)帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    文章目录 1. 前言 2. _ _ proto _ _ 属性 3. prototype属性 4. constructor属性 5. 总结 提示:不要排斥,静下心来,认真读完,你就搞懂了!(可以先看一下 ...

最新文章

  1. 新年开工——相关性分析了解一下?
  2. spring-security权限控制详解
  3. 声明式事务控制的配置要点
  4. 神圣的NLP!一文理解词性标注、依存分析和命名实体识别任务
  5. 跳板机连接数据库_跳板数据科学职业生涯回顾
  6. sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
  7. python线性链表_线性表 (单链表、循环链表-python实现)
  8. 38个Pandas实用技巧
  9. 【无线通信】基于matlab无线传感网络WSN仿真【含Matlab源码 1237期】
  10. 丢机者要哭:苹果移除了 iCloud 激活锁状态查询页面
  11. 阿里云域名解析设置自定义DNS服务器
  12. 【Python爬虫】新手入门案例教学(一):爬取豆瓣电影排行有关信息
  13. 非常的好的协同过滤入门文章
  14. Android 中view的解释
  15. TGRS2020/云检测:Deep Matting for Cloud Detection in Remote Sensing Images深度抠图在遥感图像云检测中的应用
  16. FME在测量平差上面的运用
  17. PRML(3)--Chapter2(上)-概率分布-二元变量、多项式变量、高斯分布、指数族分布
  18. 重磅综述|大脑内在神经时间尺度:时间整合与分离
  19. 音视频开发---基础概念总结
  20. 如何分析个股基本面_如何从基本面判断个股?

热门文章

  1. Ubuntu截屏快捷键设置
  2. 爬虫实例1:爬取百度热搜风云榜 前50条热搜 并将热搜发送至自己邮箱
  3. win10系统崩溃怎么修复_小编调解 win10系统wifi保护器防蹭网的修复教程 -win10使用教程...
  4. 关于计算思维重要性的思考
  5. 小象学院《分布式爬虫实战》第二期视频教程(14课全)
  6. 2021年中式烹调师(高级)考试总结及中式烹调师(高级)模拟考试
  7. 计算机开机后操作系统的加载过程
  8. CodeForces 103A Testing Pants for Sadness
  9. 新手开车必须知道的五十个小知识
  10. 毕业设计之 --- 基于机器视觉的火车票识别系统