vue3 KeepAlive include
时间: 2025-06-28 15:18:11 浏览: 14
### Vue3 中 `KeepAlive` 组件的 `include` 属性
在 Vue3 中,`<keep-alive>` 是一个内置组件,用于缓存动态组件切换时的状态。通过设置 `include` 属性可以指定哪些组件应该被缓存。
当定义了 `include` 属性后,只有匹配到该属性值列表中的组件才会被缓存[^1]。此属性接受字符串或正则表达式的数组形式来精确控制要缓存的组件名称:
```html
<!-- 使用字符串 -->
<keep-alive :include="['componentA', 'componentB']">
<router-view></router-view>
</keep-alive>
<!-- 或者使用正则表达式 -->
<keep-alive :include="/^comp/">
<router-view></router-view>
</keep-alive>
```
对于上述代码片段,在第一个例子中仅名为 `componentA` 和 `componentB` 的组件会被缓存;而在第二个例子中任何名字以 "comp" 开头的组件都会被缓存[^2]。
为了更清晰地理解这一机制的作用范围以及具体实现方式,请考虑如下场景:假设有一个应用具有多个页面视图,并希望通过 `<keep-alive>` 来优化性能并保持某些特定页面的数据状态不丢失,则可以在路由配置文件里给定目标组件的名字作为参数传递给 `include` 属性。
```javascript
// router/index.js
const routes = [
{ path: '/a', name: 'ComponentA', component: ComponentA },
{ path: '/b', name: 'ComponentB', component: ComponentB }
];
```
```html
<!-- App.vue -->
<template>
<div id="app">
<!-- 只有路径为 /a 或 /b 对应的组件会受到 keep-alive 影响 -->
<keep-alive :include="['ComponentA', 'ComponentB']">
<router-view />
</keep-alive>
</div>
</template>
```
这样做的好处在于能够有效地减少不必要的重新渲染次数,从而提高用户体验和应用程序的整体效率[^3]。
阅读全文
相关推荐


















