Przeglądaj źródła

fix: pin tab not working correct (#23)

Li Kui 8 miesięcy temu
rodzic
commit
4dbd13d48d

+ 9 - 1
packages/@core/forward/stores/src/modules/tabbar.ts

@@ -143,6 +143,7 @@ const useCoreTabbarStore = defineStore('core-tabbar', {
         currentTab.params = params || currentTab.params;
         currentTab.query = query || currentTab.query;
         currentTab.fullPath = fullPath || currentTab.fullPath;
+        currentTab.meta = meta || currentTab.meta;
         this.tabs.splice(tabIndex, 1, currentTab);
       }
       this.updateCacheTab();
@@ -285,7 +286,13 @@ const useCoreTabbarStore = defineStore('core-tabbar', {
         this.tabs[index].meta.affixTab = true;
       }
       // TODO: 这里应该把tab从tbs中移除
-      this.affixTabs.push(tab as unknown as RouteRecordNormalized);
+      const affixIndex = this.affixTabs.findIndex(
+        (item) => this.getTabPath(item) === this.getTabPath(tab),
+      );
+      if (affixIndex === -1) {
+        tab.meta.affixTab = true;
+        this.affixTabs.push(tab as unknown as RouteRecordNormalized);
+      }
     },
     /**
      * 刷新标签页
@@ -324,6 +331,7 @@ const useCoreTabbarStore = defineStore('core-tabbar', {
       );
 
       if (index !== -1) {
+        tab.meta.affixTab = false;
         this.affixTabs[index].meta.affixTab = false;
         this.affixTabs.splice(index, 1);
         this.addTab(tab);