keep-alive理解及注意事项
前端印记
共 1949字,需浏览 4分钟
· 2021-09-02
keep-alive 是 vue 中内置组件,用 keep-alive 包裹的组件,用来缓存和保留当时状态的组件实例,而不是销毁它们。
主要是保存当时的组件状态和避免重复创建,避免重复渲染导致的性能问题。
特点
它是一个抽象组件,本身不会渲染一个 dom 元素,也不会出现在组件中的父组件链上 当组件在 keep-alive 内被切换的时候,组件内的 activated
和deactivated
这两个生命周期钩子函数会被执行。组件一旦被缓存,再次渲染就不会执行 created、mounted 生命周期钩子函数。要求同时只有 1个 子组件被渲染 函数式组件不能用,因为它们没有缓存实例。
使用场景
官方例子:
<!-- 1 动态组件(所谓动态组件就是让多个组件使用同一个挂载点,并动态切换。) -->
<keep-alive>
<component is="currentComponent"></component>
</keep-alive>
<!-- 2 多个条件判断的子组件 -->
<keep-alive>
<comp-a v-if="true"></comp-a>
<comp-b v-else></comp-b>
</keep-alive>
<!-- 3 transition -->
<transition>
<keep-alive>
<component is="currentComponent"></component>
</keep-alive>
</transition>
<!-- 4 结合vue-router -->
<keep-alive>
<router-view></router-view>
</keep-alive>
props
include
白名单 只有名称匹配的组件会被缓存exclude
黑名单 任何匹配的组件都不会被缓存max
最多缓存多少实例,一旦达到这个数字,新实例被创建之前,会销毁已缓存组件中最久没有被访问到的实例---LRU 算法
include 和 exclude 首先检查组件的 name
属性,如果 name 不可用,则匹配局部注册名称。
匿名组件不能被匹配。
需要注意的地方
关于生命周期
当引入 keep-alive 的时候,
页面第一次进入,生命周期钩子的触发顺序:created --- mounted----activated
;
退出时触发 deactivated
;
当再次进入的时候,只触发 activated
。
返回 dom 不让其重新刷新,只执行一次的放在 mounted 中;
组件每次进去执行的方法放在 activated 中。
关于注册组件
在 keep-alive 中直接添加 include,cachedViews
----Array 类型:包含 vue 文件的组件 name 都将被缓存起来;反之 exclude 则是不会被缓存;
exclude 的优先级大于 include。
也就是说:当 include 和 exclude 同时存在的时候,exclude 会生效,include 不会生效的。
让我们一起携手同走前端路!
关注公众号回复【加群】即可
评论
架构应该如何来理解?
来源:zhuanlan.zhihu.com/p/141027477👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:htt
小哈学Java
0
你真的理解 devDependencies 和 dependencies 的区别吗?
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群作者:井柏然原文:https://juejin.cn/post/7135795969370619918你是否真的理解 devDependencies 和 dependencies 的区别?如果不能确切的回答、理解还停留在模糊的阶段,
前端Q
0
乐普心安宝及心电图机,助力安康市搭建“心电一张网”,打通全域“生命线”!
为持续推动胸痛中心建设,助力全民健康,全面提升心血管疾病等急危重症救治能力水平。4月20日,由安康市卫健委主办、安康市中医医院承办的“第七届心血管汉江学术会议暨安康市胸痛中心大会”在高新国际会议中心顺利举行。市人大常委会主任王彪、市政协副主席唐纹、市政府党组成员刘英华等领导亲临现场,受邀参会的中国科
乐普医疗AI
0
AI大模型之路 第三篇:从零实现词嵌入模型,加深理解!
你好,我是郭震今天我们研究「AI大模型第三篇」:词维度预测,很多读者听过词嵌入,这篇文章解答下面问题:词嵌入是什么意思?怎么做到的?原理是什么?从零实现一个专属你数据集的词嵌入我们完整从零走一遍,根基的东西要理解透,这样才能发明出更好的东西。1 skip-gram模型Skip-gram模型是一种广泛
Python与算法社区
11
从理解路由到实现一套Router(路由)
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群平时在Vue项目中经常用到路由,但是也仅仅处于会用的层面,很多基础知识并不是真正的理解。于是就趁着十一”小长假“查阅了很多资料,总结下路由相关的知识
程序员成长指北
10
深入理解Camera 三 (相机应用层)
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、概览二、Camera Api v2三、Camera Framework四、Camera App Demo相机应用层一、概览相机应用处于整个框架的上层,在现实生活中,为了满足各式各样的应用场景,会加入很多业
程序员Android
10
深入理解Camera 二 (相机架构概览)
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:相机架构概览Android系统利用分层思想,将各层的接口定义与实现分离开来,以接口作为各层的脉络连接整体框架,将具体实现的主导权交由各自有具体实现需求的平台厂商或者Android 开发者,这样既做到把控全局,
程序员Android
10
无任务学习及在机器人任务和运动规划中的应用
大数据文摘授权转载自中国人工智能学会作者:张宪琦,范晓鹏摘 要:本文提出了无任务学习的方法,阐述了其与现有方法(包括自监督学习、迁移学习、模仿学习、强化学习)的区别与联系;然后,介绍了无任务学习在机器人任务和运动规划领域的应用,并分析了无任务学习在该领域的优势和主要研究难点。最后,对无任务学习在机器
大数据文摘
0