Browse Source

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

NickLuo 1 year ago
parent
commit
58d7e50de3
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/store/modules/tagsView.ts

+ 9 - 2
src/store/modules/tagsView.ts

@@ -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,