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

解决方案:重新封装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. LeetCode题集-4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解

    题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 作为目前遇到 ...

  2. Qt表格入门

    摘要     表格作为数据展示的界面,会在很多场景下使用.Qt为我们提供了使用简单方便和扩展性强的表格视图,这里做一个简单的入门整理.     个人能力有限,有错误欢迎留言指正,如果你有更好的方法,也 ...

  3. std::vector 和 std::map 都支持以下比较运算符

    在 C++ 标准库中,std::vector 和 std::map 都支持以下比较运算符: ==(相等运算符) !=(不等运算符) <(小于运算符) <=(小于等于运算符) >(大于 ...

  4. Android dtbo(3) 编译和验证

    您可以使用设备树编译器 (DTC) 编译设备树源文件.不过,在将叠加层 DT 应用于目标主 DT 之前,您还应该通过模拟 DTO 的行为来验证结果. 1. 通过DTC进行编译 构建主 DT .dts ...

  5. vue合计行添加点击事件

    项目开发中做统计报表的时候,用到了合计功能.这个直接添加el-table已经封装好的show-summary属性就可以,但是如何给合计单元格添加点击事件呢?@cell-click="cell ...

  6. Promise 有几种状态,什么时候会进入catch?

    Promise 有几种状态 三个状态:pending.fulfilled.reject 两个过程:padding -> fulfilled.padding -> rejected Prom ...

  7. 014 Python 的数据类型(数字、字符串、列表、字典)

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/24 20:31 # Filename:014 Python 的数据类型( ...

  8. kotlin关键字与操作符

    硬关键字:始终解释为关键字,不能用作标识符 as - 用于类型转换 - 为导入指定一个别名 as? 用于安全类型转换 break 终止循环的执行 class 声明一个类 continue 继续最近层循 ...

  9. mongo对文档中数组进行过滤的三种方法

    前言 在mongo中数据类型有很多种,常见的包括: 数据类型 例子 描述 String { "x" : "foot" } 字符串.存储数据常用的数据类型.在 M ...

  10. Cut the Sequence(单调队列DP+set)

    题面 大意:一段长度为n的序列,分成若干段,每段值的总和不能超过m,求各段中最大值加起来的最小值. 其实最朴素的DP还是很好想的,以f[i]表示i及i以前已经分好所需的最小值,a[i]表示i点的值,那 ...