目录

一、KeepAlive的作用

二、缓存组件配置

2.1、过滤缓存组件

2.2、最大缓存实例数

三、KeepAlive组件的生命周期

四、错误用法

4.1、缓存v-if包裹的动态组件

4.2、拼写错误


一、KeepAlive组件的作用

        首先,keep-alive是一个vue的内置组件,官网文档:vue.js - KeepAlive。我们在编写vue代码时,是可以直接<KeepAlive></KeepAlive>组件化调用的。

        KeepAlive多用于切换tab页或跳转、改变页面时候,缓存旧页面,以达到使用浏览器后退或返回功能回到旧页面时候,依旧可以保留跳转前的页面值。

二、缓存组件配置

2.1、缓存过滤

        在<KeepAlive></KeepAlive>中,被包裹的组件将会被缓存,默认缓存包裹的所有实例。当然可以根据事情情况选择特定选择实例进行缓存,这样也有助提供响应速度。

// include和exclude 其值可以是字符串,数组、正则表达式,除字符串外,其余类型得使用:include或:exclude

<KeepAlive include="" exclude="">
    <component :is="currentTab" v-show="routeName === key" />
</KeepAlive>

2.2、最大缓存实例数

        这块设置用来限制组件缓存的最大实例数,当缓存的实例数超过指定的最大缓存数后,vue自动将最久没有被访问的实例数的缓存删除,用来添加新的缓存实例。

// 使用prop :max指定

<KeepAlive :max="20">
    <component :is="currentTab" v-show="routeName === key" />
</KeepAlive>

 

三、KeepAlive组件的生命周期

        activated 和 deactivated 生命周期可以用来处理一些回调逻辑。

四、错误用法

        在使用KeepAlive时,有几个注意点,要不然会没有缓存效果。

4.1、缓存v-if包裹的动态组件

// 因为v-if会在dom中移除(KeepAlive会不起作用) -->
<template v-if="routeName === key">
    <KeepAlive>
        <component :is="currentTab"/>
    </KeepAlive>
</template>

// 改用v-show
<KeepAlive>
    <component :is="currentTab" v-show="routeName === key" />
</KeepAlive>

4.2、拼写错误

        在template块里得使用KeepAlive,若使用keep-alive的话会不起作用,亲测。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐