keep-alive

Posted 沉默的乘客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keep-alive相关的知识,希望对你有一定的参考价值。

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

  

一个场景

用户在某个列表页面选择筛选条件过滤出一份数据列表,由列表页面进入数据详情页面,再返回该列表页面,我们希望:列表页面可以保留用户的筛选(或选中)状态。
keep-alive就是用来解决这种场景。当然keep-alive不仅仅是能够保存页面/组件的状态这么简单,它还可以避免组件反复创建和渲染,有效提升系统性能。总的来说,keep-alive用于保存组件的渲染状态。

keep-alive用法

  • 在动态组件中的应用
    <keep-alive :include="whiteList" :exclude="blackList" :max="amount">
         <component :is="currentComponent"></component>
    </keep-alive>
  • 在vue-router中的应用
    <keep-alive :include="whiteList" :exclude="blackList" :max="amount">
        <router-view></router-view>
    </keep-alive>
  include定义缓存白名单,keep-alive会缓存命中的组件;exclude定义缓存黑名单,被命中的组件将不会被缓存;max定义缓存组件上限,超出上限使用LRU的策略置换缓存数据。

转自 https://www.jianshu.com/p/9523bb439950  (这里讲了源码剖析)

以上是关于keep-alive的主要内容,如果未能解决你的问题,请参考以下文章

vue中的缓存——keep-alive,activated,deactivated

15《Vue 入门教程》Vue 动态组件 &amp;amp; keep-alive

vue 路由 按需 keep-alive

keep-alive组件及相关知识

Vue.js - 删除从 keep-alive 加载的子组件

Vue 路由按需keep-alive(附源码)