Vue 词条目录
前端Wiki/词条/keep-alive 缓存

keep-alive 缓存

定义缓存不活动的组件实例,避免切换标签页时反复销毁重建丢失状态

默认情况下组件被切换走就会被销毁,回来时重建,表单填到一半的内容随之消失。keep-alive 是 Vue 内置的抽象组件,把其中的动态组件或 router-view 包起来后,不活动的组件只是被停用(触发 deactivated)而非卸载,再次显示时停用状态恢复(触发 activated),DOM 与数据都留在内存里。

它通过 include、exclude、max 三个属性控制缓存范围:按组件名做白名单或黑名单过滤,max 限制最多缓存多少个实例,超出按 LRU 算法淘汰。文档类、标签页类、分步表单场景非常合适,但详情页这种数据需要实时刷新的场景要谨慎,必要时在 activated 钩子里主动拉取最新数据。

HTML
<template>
  <keep-alive include="UserList,OrderList" :max="10">
    <component :is="currentTab" />
  </keep-alive>
</template>

<script setup>
import { ref, onActivated } from 'vue';
const currentTab = ref('UserList');
onActivated(() => { console.log('从缓存中恢复了,可以刷新数据'); });
</script>
⚠ 常见误区
🔗 相关词条组件与 props生命周期
← 返回来源章节生命周期