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

解决方案:重新封装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. Qt连连看(二)界面制作

    我们先来制作两个简单的页面 一.主界面 要求在main.cpp里面设置对应的槽函数 (1) 点击开始游戏能跳转到游戏界面 (2) 点击帮助能够显示游戏说明,如下 二.游戏界面 要求如下: (3) 初始 ...

  2. CSP初赛知识点:Linux 系统

    CSP初赛知识点:Linux 系统 前言 近年 CSP 初赛几乎前 5 道选择题都有一两道有关 Linux 系统的使用,所以作为备战 CSP-J/S 2024 的资料,整理下来啦. 祝各位今年所有考试 ...

  3. Python—开发工具 PyCharm 使用

    一.创建新工程: 第一个工程创建完毕!

  4. 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件

    #CDN配置: 配置1:加速域名-需要启用加速的域名 配置2:加速区域-需要启用加速的地区 配置3:加速类型-需要启用加速的资源 #参考知识: 超级Ping:http://www.17ce.com/ ...

  5. U179915 关于分级火箭的一点理想化的计算

    题目地址 本题是一道疯狂推式子的玄学复杂度sb题. 解题思路 1.数学部分 ​ 首先假定已经将火箭分成了 \(n+1\) 级,记使用了 \(n\) 个分级器.记各级的开始时间点为: \[0=t_0&l ...

  6. Java日期时间API系列32-----Jdk8中java.time包中的新的日期时间API类应用,时间工具包 xk-time 1.0.0 版本完成。

    从Java日期时间API系列第一篇博客开始,利用业余时间对Java日期时间API源码进行了系统的.多次的阅读实践,包括Date.LocalDate.LocalDateTime.LocalTime.In ...

  7. 墨天轮PostgreSQL精品学习资源合集(含基础手册、实操技巧&案例、书籍推荐)

    近日,PostgreSQL 15 的第一个 beta 版本发布,这一最新版本在开发者体验.性能表现等方面都有提升.从最新的DB-Engines排名可以发现,PostgreSQL近十年来得分一路高涨,目 ...

  8. nextjs 的函数,参数,属性装饰器的使用

    // 属性装饰器 const doc1:PropertyDecorator = (target:any,val: string | symbol) => { console.log(target ...

  9. MySQL 通过 Next-Key Locking 技术(行锁+间隙锁)避免幻读问题

    在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问题.幻读是一种事务并发问题,通常出现在Repeatable Read隔离级别下的范围查询操作中.幻读的现象是,事务在 ...

  10. 带你一起看看nginx如何部署安装

    nginx部署安装 Linux安装 源码构建Nginx 管理器安装 windows安装 首先需要下载Nginx软件包 nginx软件官方下载地址: nginx官方下载连接 建议选择稳定的软件版本,如果 ...