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

当组件在< keep-alive >内切换,它的 activated 和 deactived 这两个生命周期钩子函数将会被对应执行。
1. include

<keep-alive><component />  //需要缓存的组件
</keep-alive><!-- 逗号分隔字符串 -->
<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为name1或者name1的组件 -->
<keep-alive include="a,b"> <component />
</keep-alive><!-- exclude同理 -->

2. excludet

<!-- 组件name为a的组件不缓存-->
<keep-alive exclude="a"> <component />
</keep-alive><!-- 注意:如果同时使用include,exclude,那么exclude优先于include, 下面的例子只缓存a组件-->
<keep-alive include="a,b" exclude="b"> <component />
</keep-alive>

3. max

<!-- 最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。-->
<keep-alive max="5"> <component />
</keep-alive>

4使用中可能遇到的问题
当引入keep-alive 的时候,页面第一次进入,钩子的触发顺序created> mounted> activated,
退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated。

注意:我们知道 keep-alive 之后页面模板第一次初始化解析变成HTML片段后,再次进入就不在重新解析而是读取内存中的数据,即,只有当数据变化时,才使用VirtualDOM进行diff更新。有需要的话,页面进入的数据获取应该在activated中也放一份。数据下载完毕手动操作DOM的部分也应该在activated中执行才会生效。
所以,有需要的话,应该activated中留一份数据获取的代码,或者不要created部分,直接将created中的代码转移到activated中。

1 匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。匿名组件不能被匹配。
2 不会在函数式组件中正常工作,因为它们没有缓存实例。
3 最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。

Vue中<keep-alive>组件的使用相关推荐

  1. vue树形结构html,怎么在vue中利用递归组件实现一个树形控件

    怎么在vue中利用递归组件实现一个树形控件 发布时间:2021-06-11 17:26:48 来源:亿速云 阅读:81 作者:Leah 本篇文章为大家展示了怎么在vue中利用递归组件实现一个树形控件, ...

  2. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于"父子组件通信"的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰 ...

  3. vue中写svg组件svg图片加载不出来

    vue中写svg组件svg图片加载不出来 结构 首先要安装3个插件:svg-sprite-loader,svgo,svgo-loader npm install svg-sprite-loader - ...

  4. vue中,兄弟组件之间传值

    vue中,兄弟组件之间传值 项目中,需要使用多个子组件,当需要传递值的时候,较为麻烦,怎样实现呢 1.一般可以使用子组件a传递给父组件,再由父组件传递给子组件b.但是一般较为麻烦, 2.使用bus作为 ...

  5. Vue中,一个组件调用其他组件的方法(非父子组件)

    Vue中,一个组件调用其他组件的方法(非父子组件) 场景--B页面(组件)想调用 A页面(组件)中的方法:但是两个页面(组件)毫无关联(刷新 A的数据). 方式一:引用式 1.当前组件引入将要调用方法 ...

  6. 「后端小伙伴来学前端了」Vue中Props 实现组件通信TodoList案例

    自己拍的小云彩 源码在文末. 前言 上篇文章写了个V利用Props进行组件之间的通信,这不立马就安排上这个案例拉丫.光学不敲等于没学哈(资深大佬除外哈) 目标就是实现如下的样子: 能够进行增删改查,并 ...

  7. vue中使用keepAlive组件缓存遇到的坑

    项目开发中在用户由分类页category进入detail需保存用户状态,查阅了Vue官网后,发现vue2.0提供了一个keep-alive组件. 上一篇讲了keep-alive的基本用法,现在说说遇到 ...

  8. vue中获取/操作组件中的dom元素

    最近刚做了一个项目,需要用到地图,选择的是腾讯地图,创建地图的时候,需要给地图创建函数中传入地图容器的id或者容器的dom元素,但是在调试过程中,发现怎么都无法获取dom元素,直接通过getEleme ...

  9. Vue中封装打印组件包括基本信息、表格用途出库单、入库单、请购单等单据

    1.我们在工作中,在中后台系统应用中,经常会遇到打印的问题. 2.产品需求将列表详情数据能够打印生产单据,包括列表详情的所有数据. 3.通常我们可以通过接口拿到一定格式的JSON数据. 打印组件,总的 ...

  10. vue中8种组件通信方式,纯干货!值得收藏

    vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就 ...

最新文章

  1. iOS视频流采集概述(AVCaptureSession)
  2. 【COCOS2D-X(2.X) 游戏开发系列之一】COCOS2DX(V2.X)与(V1.X)的一些常用函数区别讲解!在2.X版CCFILEDATA类被去除等...
  3. 设置SecureCRT配色和解决乱码问题
  4. SAP CRM WebClient UI Abstract Page的Selenium实现
  5. golang 复制对象的正确做法
  6. shutil——高级的 文件、文件夹、压缩包 处理模块
  7. linux下编译webkit,ubuntu下编译webkit
  8. maven java jar_如何去maven仓库下载jar包
  9. VC中用到的几种调试输出TRACE的方法及其区别
  10. PHP全路径无限分类导航LINK代码实现
  11. VS2012下基于Glut OpenGL显示一些立体图形示例程序:
  12. 电商生鲜网站开发(接口文档)
  13. android端使用mockServer
  14. veu2 启动添加本地ip访问
  15. 一款简单好用的开源文档管理系统
  16. 喜报!易基因“同源基因特异性甲基化时序数据分析方法”获专利授权
  17. namesilo域名注册教程
  18. Python编程语言好学吗? 零基础转行能学Python吗?
  19. 手游还能这么玩?电脑控制手机鼠标键盘大屏玩手游了解一下
  20. 小白机器学习笔记(一)

热门文章

  1. 【MOS管】基础知识和简易电路
  2. GitLab 创建项目组及将代码导入项目
  3. vpa函数python_Biopython序列比对
  4. html css js菜鸟教程,DOM CSS - JavaScript 教程 - 菜鸟学堂-脚本之家
  5. 蚁群算法原理及python实现
  6. 无法从“cstring”转换为“lpcstr”_别用Sketchup一个个转模型的版本了,用这些批量转换器真香…...
  7. 计算机电源接口在哪,电脑电源接口详解
  8. 计算机编程是什么专业 难学吗
  9. 夏普ar2048s打印机驱动安装_无光盘,轻松解决各种打印机的驱动安装
  10. NMF非负矩阵分解算法(Non-negative Matrix Factorization)