!63 关闭动态路由tab页签时不清理组件缓存

* 动态路由页面关闭时不清理组件缓存,避免清理已打开的多个路由页面缓存
This commit is contained in:
NickLuo 2023-12-13 00:55:46 +00:00 committed by ahaos
parent c045276a7c
commit 58d7e50de3

View File

@ -1,4 +1,4 @@
import { TagView } from 'vue-router'; import { TagView, RouteRecordNormalized } from 'vue-router';
export const useTagsViewStore = defineStore('tagsView', () => { export const useTagsViewStore = defineStore('tagsView', () => {
const visitedViews = ref<TagView[]>([]); const visitedViews = ref<TagView[]>([]);
@ -35,7 +35,9 @@ export const useTagsViewStore = defineStore('tagsView', () => {
const delView = (view: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => { const delView = (view: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => {
return new Promise((resolve) => { return new Promise((resolve) => {
delVisitedView(view); delVisitedView(view);
delCachedView(view); if (!isDynamicRoute(view)) {
delCachedView(view);
}
resolve({ resolve({
visitedViews: [...visitedViews.value], visitedViews: [...visitedViews.value],
cachedViews: [...cachedViews.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 { return {
visitedViews, visitedViews,
cachedViews, cachedViews,