你真的了解keep-alive吗?

335 阅读2分钟

一、为什么会使用keep-alive? 有时候我们不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而 是希望组件可以缓存下来,维持当前的状态。这时候就可以用到keep-alive组件。 二、keep-alive是什么? keep-alive的是vue的一个内置实例,通过这个属性可以缓存的组建的v-node。这样做有什么用呢?

1.当你在对组件的反复切换的时候,去复用缓存的v-node,可以提高页面的渲染效率

2.可以防止在组件的切换的时候导致组件状态变化。

三、keep-alive属性 keep-alive有三个属性

1.include :记录的是哪些组件可以被缓存

2.exclude: 记录了哪些组件不能被缓存

3.max: 记录的是可以缓存组件的最大数量

当然还有下面的这些也同样重要:

keep-alive还提供了两个的生命周期钩子函数

actived: 在激活的时候的使用,第一次激活实在mounted之后执行

dectived:在失活的时候使用。

三、实现原理 keep-alive内部保存了一个key数组和一个组件缓存对象

key数组:记录了缓存v-node的key值,如果说没有key值得话会自动创建一个key值

cache对象:会以key为键名,v-node为键值创建一个对象

在渲染得时候会先判断缓存中有没有这个v-node如果有得话直接复用已经缓存,如果没有重新创建。

当切换到该组件得时候会将组件的key在key数组的位置放到最后一位。如果说缓存的数量超过了max最大值,则会删除最上时间没有使用的,也就是key数组的前面一位。

本人第一天学习keep-alive,也查阅过相关文档,借鉴过前辈的总结,综合自己理解和前辈的总结写了此片文章,如有侵权,请联系我删除。