vue中使用Keepalive
在Vue中,<keep-alive>组件用于缓存动态组件,以避免在组件切换时重复创建和销毁组件实例,提高性能。它具有一些相关的钩子函数可以用来管理缓存的组件。
使用<keep-alive>组件的基本语法如下:
<keep-alive>
<component :is="componentName"></component>
</keep-alive>
1
2
3
2
3
通过搭配路由来使用
<div>
<keep-alive v-if="isKeepAlive">
<router-view />
</keep-alive>
<template v-else>
<router-view />
</template>
</div>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
当然,vue也提供了<keep-alive>相关的钩子函数:
activated:当缓存的组件被激活时调用,即从缓存中取出并显示时触发。可以在该钩子函数中执行一些需要在组件显示时进行的操作,例如数据的初始化、异步请求等。
普通函数写法:
<keep-alive>
<component :is="componentName" @activated="onComponentActivated"></component>
</keep-alive>
1
2
3
2
3
methods: {
onComponentActivated() {
// 组件被激活时执行的操作
}
}
1
2
3
4
5
2
3
4
5
钩子函数写法:
// 与created、methods同级
activated() {
// 组件被激活时执行的操作
},
1
2
3
4
2
3
4
deactivated:当缓存的组件被停用时调用,即组件被缓存起来时触发。可以在该钩子函数中执行一些需要在组件被缓存时进行的操作,例如清除定时器、取消订阅等。
普通函数写法:
<keep-alive>
<component :is="componentName" @deactivated="onComponentDeactivated"></component>
</keep-alive>
1
2
3
2
3
methods: {
onComponentDeactivated() {
// 组件被停用时执行的操作
}
}
1
2
3
4
5
2
3
4
5
钩子函数写法:
// 与created、methods同级
deactivated() {
// 组件被停用时执行的操作
},
1
2
3
4
2
3
4
include和exclude:用于指定哪些组件应该被缓存或不被缓存。include是一个字符串或正则表达式,匹配的组件将被缓存;exclude是一个字符串或正则表达式,匹配的组件将不被缓存。<keep-alive :include="includeComponents" :exclude="excludeComponents"> <component :is="componentName"></component> </keep-alive>1
2
3data() { return { includeComponents: /ComponentA|ComponentB/, excludeComponents: 'ComponentC' }; }1
2
3
4
5
6上述示例中,
ComponentA和ComponentB将被缓存,而ComponentC不会被缓存。
这些钩子函数可以在<keep-alive>组件中的动态组件上使用,以便在组件被激活或停用时执行相应的操作。通过使用<keep-alive>和相关的钩子函数,你可以更好地管理缓存的组件,并在需要时执行额外的逻辑。
上次更新: 2025/09/05, 8:09:00