<KeepAlive> 缓存组件实例
最后更新:2026-10-22
<KeepAlive> 缓存组件实例
| 分组 | 内置组件与元素 |
|---|---|
| 类型 | 组件/元素 |
| 作用域 | 模板 |
| Vue 版本 | 3.0+ |
| SSR 支持 | 支持 |
📝 语法
<KeepAlive include="TabA,TabB" :max="10">
<component :is="currentTab"></component>
</KeepAlive>
⚙️ 参数
| props | include / exclude(名称或正则)/ max(最多缓存数,超出淘汰最久未用) |
|---|
▶ 示例
修改下面的代码,在预览区实时查看效果:
输出:
在 A 标签输入文字后切到 B 再切回:内容仍在。
💡 要点
💡 提示 配合 activated / deactivated 钩子做“重新进入时刷新、离开时暂停”。
ℹ️ 说明 max 采用 LRU 淘汰:超出上限先销毁最久未访问的实例。
⚠️ 注意 缓存的是实例与状态(含定时器):长期缓存不活跃页面会占用内存,用 max 设上限。
🏷️ 相关内置组件与元素
💡 相关案例
更多案例即将上线。
📚 相关教程
❓ 常见问题
Q 和 v-show 的区别?
A v-show 隐藏但保留 DOM;KeepAlive 缓存整个组件实例(含状态与副作用)。
Q include 怎么写?
A 逗号分隔组件名或正则::include="/Tab/"; 匹配的是组件的 name。
Q 缓存会一直保留吗?
A 默认不设上限;用 :max 控制,或用 include/exclude 白名单。