vue3 keepalive使用详解
时间: 2023-09-08 15:10:31 浏览: 147
Vue3 中的 keep-alive 组件是用于缓存动态组件的,可以在组件切换时保留组件的状态和避免重新渲染。下面是关于 Vue3 keep-alive 的使用详解:
1. 基本使用
在需要缓存的组件外部包裹一个 <keep-alive> 标签,将需要缓存的组件放在其中:
```
<template>
<keep-alive>
<router-view />
</keep-alive>
</template>
```
2. 缓存的组件生命周期钩子函数
当一个组件被缓存时,它的生命周期钩子函数会有所不同。具体如下:
- activated: 缓存的组件被激活时调用,可以在这里执行一些需要在组件激活时执行的操作。
- deactivated: 缓存的组件被停用时调用,可以在这里执行一些需要在组件停用时执行的操作。
```
<template>
<keep-alive>
<router-view v-slot="{ Component }">
<component :is="Component" />
</router-view>
</keep-alive>
</template>
```
在缓存的组件中添加 activated 和 deactivated 钩子函数:
```
<script>
export default {
name: 'cached-component',
activated() {
console.log('cached-component activated')
},
deactivated() {
console.log('cached-component deactivated')
},
}
</script>
```
3. include 和 exclude 属性
include 和 exclude 属性可以用来控制 keep-alive 缓存哪些组件和排除哪些组件。它们都可以传递一个字符串或正则表达式的数组。
- include:只有在 include 数组中的组件才会被缓存。
- exclude:在 exclude 数组中的组件不会被缓存。
```
<template>
<keep-alive include="home, about">
<router-view v-slot="{ Component }">
<component :is="Component" />
</router-view>
</keep-alive>
</template>
```
4. max 属性
max 属性用于设置缓存的最大组件数,当缓存的组件数量超过最大值时,最早缓存的组件会被销毁。
```
<template>
<keep-alive max="10">
<router-view v-slot="{ Component }">
<component :is="Component" />
</router-view>
</keep-alive>
</template>
```
阅读全文