فهرست منبع

fix: 修复页面被拦截情况下,tabbar仍被选中的问题

Hygge 9 ماه پیش
والد
کامیت
bb560572af
2فایلهای تغییر یافته به همراه10 افزوده شده و 0 حذف شده
  1. 8 0
      src/layouts/fg-tabbar/tabbar.ts
  2. 2 0
      src/router/interceptor.ts

+ 8 - 0
src/layouts/fg-tabbar/tabbar.ts

@@ -4,8 +4,16 @@
  */
 export const tabbarStore = reactive({
   curIdx: uni.getStorageSync('app-tabbar-index') || 0,
+  prevIdx: uni.getStorageSync('app-tabbar-index') || 0,
   setCurIdx(idx: number) {
     this.curIdx = idx
     uni.setStorageSync('app-tabbar-index', idx)
   },
+
+  restorePrevIdx() {
+    if (this.prevIdx === this.curIdx)
+      return
+    this.setCurIdx(this.prevIdx)
+    this.prevIdx = uni.getStorageSync('app-tabbar-index') || 0
+  },
 })

+ 2 - 0
src/router/interceptor.ts

@@ -1,3 +1,4 @@
+import { tabbarStore } from '@/layouts/fg-tabbar/tabbar'
 /**
  * by 菲鸽 on 2024-03-06
  * 路由拦截,通常也是登录拦截
@@ -49,6 +50,7 @@ const navigateToInterceptor = {
     if (hasLogin) {
       return true
     }
+    tabbarStore.restorePrevIdx()
     const redirectRoute = `${loginRoute}?redirect=${encodeURIComponent(url)}`
     uni.navigateTo({ url: redirectRoute })
     return false