动态路由页面关闭时不清理组件缓存,避免清理已打开的多个路由页面缓存

This commit is contained in:
NickLuo21 2023-12-12 10:10:56 +08:00
parent c045276a7c
commit 2bd8d4f2d8

View File

@ -1,4 +1,4 @@
import { TagView } from 'vue-router';
import { TagView, RouteRecordNormalized } from 'vue-router';
export const useTagsViewStore = defineStore('tagsView', () => {
const visitedViews = ref<TagView[]>([]);
@ -35,7 +35,9 @@ export const useTagsViewStore = defineStore('tagsView', () => {
const delView = (view: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => {
return new Promise((resolve) => {
delVisitedView(view);
delCachedView(view);
if (!isDynamicRoute(view)) {
delCachedView(view);
}
resolve({
visitedViews: [...visitedViews.value],
cachedViews: [...cachedViews.value]
@ -177,6 +179,11 @@ export const useTagsViewStore = defineStore('tagsView', () => {
}
};
const isDynamicRoute = (view: any): boolean => {
// 检查匹配的路由记录中是否有动态段
return view.matched.some((m: RouteRecordNormalized) => m.path.includes(':'));
};
return {
visitedViews,
cachedViews,