vue3使用KeepAlive组件及一些注意事项
摘要:本文介绍了Vue.js中KeepAlive组件的使用方法和注意事项。KeepAlive用于缓存组件状态,在页面切换时保持组件数据。文章详细讲解了缓存配置方法,包括通过include/exclude过滤组件和设置max限制缓存实例数。同时介绍了activated/deactivated生命周期钩子,并指出常见错误用法:避免在v-if中使用KeepAlive(应改用v-show)和注意拼写问题(
目录
一、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的话会不起作用,亲测。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)