소스 검색

fix(auth): 修复快捷登录回调后页面跳转失败问题

- 判断页面栈仅剩一个页面时改用 reLaunch 替代 redirectTo
- 为 switchTab 添加失败时的 fallback 跳转逻辑
- 移除登录成功后多余的 initData 调用,由 onShow 自动加载
408249787@qq.com 2 주 전
부모
커밋
b84ad84d2d
2개의 변경된 파일과 12개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 0
      api/ignore/index.js
  2. 2 2
      pages/home/home.vue

+ 10 - 0
api/ignore/index.js

@@ -93,6 +93,9 @@ export function mobileLogin(data) {
                             const backUrl = takeBackUrl();
                             const backIsTab = uni.getStorageSync('login_back_is_tab');
                             uni.removeStorageSync('login_back_is_tab');
+                            // 快捷登录 OAuth 回调后应用重启,首页可能是页面栈中唯一的页面
+                            // uni.redirectTo 无法关闭栈中最后一个页面,此时需用 reLaunch
+                            const onlyOnePage = getCurrentPages().length <= 1;
                             if (backUrl) {
                                 if (backIsTab) {
                                     // tabBar 页面必须用 switchTab,redirectTo 无法跳转
@@ -102,6 +105,13 @@ export function mobileLogin(data) {
                                             uni.switchTab({ url: '/pages/tidings/tidings' });
                                         }
                                     });
+                                } else if (onlyOnePage) {
+                                    uni.reLaunch({
+                                        url: backUrl,
+                                        fail: function () {
+                                            uni.switchTab({ url: '/pages/tidings/tidings' });
+                                        }
+                                    });
                                 } else {
                                     uni.redirectTo({
                                         url: backUrl,

+ 2 - 2
pages/home/home.vue

@@ -293,8 +293,8 @@ export default {
         .then(res => {
           this.show = false
           this.oauthLogging = false
-          // 登录成功后加载首页数据
-          this.initData()
+          // mobileLogin 内部已处理回跳,不再调用 initData()
+          // 若最终留在首页,onShow 会自动加载数据
         })
     },
     handleRepair() {