uniapp多次触发跳转问题

问题描述:快速点击跳转页面后会闪退到登陆页面

解决方案:重新封装uniapp跳转api,加防抖锁,To.ts

复制代码
  import { NavigateToOptions, RedirectToOptions, ReLaunchOptions, SwitchTabOptions } from 'uni-app';

  interface ToImplements {
      navigateTo(obj: NavigateToOptions): void;
      redirectTo(obj: RedirectToOptions): void;
      reLaunch(obj: ReLaunchOptions): void;
      switchTab(obj: SwitchTabOptions): void;
  }

  class ToClass implements ToImplements {
      private static instance: ToClass | null = null;
      private time: number;
      private lock: boolean;

      private constructor(time: number = 500) {
          this.time = time;
          this.lock = false;
      }

      // 单例模式,确保只有一个实例
      public static getInstance(time?: number): ToClass {
          if (!ToClass.instance) {
              ToClass.instance = new ToClass(time);
          }
          return ToClass.instance;
      }

      // 私有方法,用于执行导航操作并设置锁
      private navigateAndLock<T extends (...args: any[]) => void>(func: T, obj: Parameters<T>[0]): void {
          if (this.lock) return;
          this.lock = true;
          func(obj);
          setTimeout(() => {
              this.lock = false;
          }, this.time);
      }

      // 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面
      navigateTo(obj: NavigateToOptions): void {
          this.navigateAndLock(uni.navigateTo, obj);
      }

      // 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
      redirectTo(obj: RedirectToOptions): void {
          this.navigateAndLock(uni.redirectTo, obj);
      }

      // 关闭所有页面,打开应用内的某个页面
      reLaunch(obj: ReLaunchOptions): void {
          this.navigateAndLock(uni.reLaunch, obj);
      }

      // 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
      switchTab(obj: SwitchTabOptions): void {
          this.navigateAndLock(uni.switchTab, obj);
      }
  }

  // 获取单例实例
  export const useUni = ToClass.getInstance();

使用方法

复制代码
  import { useUni } from '@/hooks/To'  

*  useUni.navigateTo({*
   url: `/pages/admin/components/details?id=` + id,
   })

相关推荐
童安格粉丝3 个月前
centos 7 防止及解决keepalive脑裂现象(主备均有vip)
运维·centos·问题·keepalived·vip·漂移·两台都有
网络研究院3 个月前
多云复杂性正在危及组织的数字化进程
网络·人工智能·问题·技术··解决·洞察
网络研究院7 个月前
生物识别技术存在的问题及需要考虑的关键事项
人工智能·问题·风险·身份·隐私·验证·生物识别
悟道子HD7 个月前
web后端——netbeans ide +jsp+servlet开发学习总结
java·前端·ide·经验分享·后端·编辑器·问题
悟道子HD7 个月前
firefox 浏览器常见问题(技巧)总结
经验分享·科技·firefox·浏览器·问题·更新·技巧
伊织code8 个月前
生活 - 解决提出问题的人
生活·问题·解决·屏蔽·心态
前端菜鸟来报道8 个月前
关于npm和yarn的使用(自己的问题记录)
npm·问题
悟道子HD8 个月前
计算机网络技术-TCP传输连接的建立和释放过程;
网络·科技·tcp/ip·计算机网络·三次握手·问题·经验
fighting的码农(zg)-GPT9 个月前
【保姆级】GPT的Oops问题快速解决方案
gpt·算法·gpt4·解决方案·问题·sora·oops