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

解决方案:重新封装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,
  })

uniapp多次触发跳转问题的更多相关文章

  1. uni-app 页面配置和跳转(一)转

    今天看Dcloud官网更新了个uni-app,据说一套代码三端发布(Android,iOS,微信小程序),果断一试. uni.navigateTo(OBJECT) 保留当前页面,跳转到应用内的某个页面 ...

  2. uni-app中遇到的跳转问题

    最近在使用uni-app时,遇到的一个问题,使用uni.navigateTo跳转时在H5端是可以的,在小程序端报 fail webview count limit exceed 这个错,解决办法如下: ...

  3. uniapp在在页面跳转时,若URL太长的字符串会导致数据传递失败

    url有长度限制,太长的字符串会传递失败,可使用窗体通信.全局变量,或encodeURIComponent等多种方式解决,如下为encodeURIComponent示例的解决方法. <navig ...

  4. jQuery - 按回车键触发跳转

    键盘事件有三种: keyup:按键按下去,抬上来后,事件才生效 (推荐) keydown:按键按下去就生效 keypress:与 keydown 事件类似,当按钮被按下时,会发生该事件,与 keydo ...

  5. iOS——使用StroryBoard页面跳转及传值

    之前在网上搜iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思 ...

  6. iOS中两个APP之间的跳转和通信

    app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...

  7. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  8. iOS使用StroryBoard页面跳转及传值

    之前在网上iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思想 ...

  9. Android 安卓实现页面相互跳转并相互传递参数

    一.对于两个页面之间相互传值,跳转的时候我们使用 startActivityForResult(intent,0),而不是startActivity(intent) 这个方法 第一个页面中在触发跳转的 ...

  10. iOS APP之间到跳转,以及热门应用,手机自带到应用跳转

    应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...

随机推荐

  1. MyBatisPlus——代码生成器

    代码生成器 快速生成各项代码 步骤 创建Generator类,并创建main方法 创建代码生成器 AutoGenerator autoGenerator = new AutoGenerator(); ...

  2. 实用技巧:根据menuconfig定位一个驱动涉及到的源文件

    根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码.新手不知道如何定位驱动相关源码,这篇文章将告之. 假设我手头有一块开发板,现在我想要获取板载ov ...

  3. 图解MQTT概念、mosquitto编译和部署 ,写代码,分别使用外网和本地服务器进行测试

    前沿提要: MQTT是什么不知道? 看这一篇:https://www.cnblogs.com/happybirthdaytoyou/p/10362336.html 阿里云官网玩不转? 看这一篇: ht ...

  4. 均值回归策略在A股ETF市场获利的可能性

    如何在股票市场获利 曾经有人告诉我一个在股票市场赚钱的秘诀,只要掌握这个秘诀,赚钱就像捡钱一样容易.他说:这个秘诀其实很简单,就是在股票价格低的时候买入,在价格高的时候卖出. 啧啧,不愧是秘诀,明明是 ...

  5. Nuxt.js 应用中的 app:suspense:resolve 钩子详解

    title: Nuxt.js 应用中的 app:suspense:resolve 钩子详解 date: 2024/10/6 updated: 2024/10/6 author: cmdragon ex ...

  6. 使用composer创建项目时报错:Composer could not find the config file?

    使用composer创建项目时报错:Composer could not find the config file:C:\Composer ....? 一般报这个错就是composer安装的时候配置了 ...

  7. SURF (Speeded Up Robust Features,加速稳健特征)

    本篇文章来自wikipedia,如果需要阅读英文,可以去看一下. SURF (Speeded Up Robust Features, 加速稳健特征) 是一个稳健的图像识别和描述算法,首先于2006年发 ...

  8. Java日期时间API系列15-----Jdk8中java.time包中的新的日期时间API类,java日期计算2,年月日时分秒的加减等

    通过Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析 ,可以看出java8设计非常好,实现接口Temporal, Tempora ...

  9. Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)

    不论你是数据库小白,还是久经沙场的技术专家,你接触和运维Oracle数据库的第一步可能都是安装配置.并且随着软硬件的升级.替换以及业务场景的变化,数据库安装也将是你常常会进行的操作之一. 这里先为大家 ...

  10. kotlin集合——>迭代器、区间与数列

    1.迭代器 对于遍历集合元素,Kotlin 标准库支持 迭代器 的常用机制⸺对象可按顺序提供对元素的访问权限,而 不会暴露集合的底层结构.当需要逐个处理集合的所有元素(例如打印值或对其进行类似更新)时 ...