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'  
uniapp多次触发跳转问题的更多相关文章
- uni-app 页面配置和跳转(一)转
		今天看Dcloud官网更新了个uni-app,据说一套代码三端发布(Android,iOS,微信小程序),果断一试. uni.navigateTo(OBJECT) 保留当前页面,跳转到应用内的某个页面 ... 
- uni-app中遇到的跳转问题
		最近在使用uni-app时,遇到的一个问题,使用uni.navigateTo跳转时在H5端是可以的,在小程序端报 fail webview count limit exceed 这个错,解决办法如下: ... 
- uniapp在在页面跳转时,若URL太长的字符串会导致数据传递失败
		url有长度限制,太长的字符串会传递失败,可使用窗体通信.全局变量,或encodeURIComponent等多种方式解决,如下为encodeURIComponent示例的解决方法. <navig ... 
- jQuery - 按回车键触发跳转
		键盘事件有三种: keyup:按键按下去,抬上来后,事件才生效 (推荐) keydown:按键按下去就生效 keypress:与 keydown 事件类似,当按钮被按下时,会发生该事件,与 keydo ... 
- iOS——使用StroryBoard页面跳转及传值
		之前在网上搜iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思 ... 
- iOS中两个APP之间的跳转和通信
		app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ... 
- js模拟触发事件
		html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件] 可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ... 
- iOS使用StroryBoard页面跳转及传值
		之前在网上iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思想 ... 
- Android 安卓实现页面相互跳转并相互传递参数
		一.对于两个页面之间相互传值,跳转的时候我们使用 startActivityForResult(intent,0),而不是startActivity(intent) 这个方法 第一个页面中在触发跳转的 ... 
- iOS APP之间到跳转,以及热门应用,手机自带到应用跳转
		应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ... 
随机推荐
- 分享3款开源、免费的Avalonia UI控件库
			Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序.它使用自己的渲染引擎绘制UI控件,确保在Windows.macOS.Linux.Android.i ... 
- JSP——简介-快速入门
			JSP 简介 JSP 快速入门 <%@ page contentType="text/html;charset=UTF-8" language=&qu ... 
- MyBatis动态增改,多字段模糊查询
			示例: insert insert into bargain_products <trim prefix="(" suffix=")" suffixOve ... 
- 手动检查 token 是否过期
			1.在 存储 token 的时候说明登录了 此时 把时间戳记录一下 js-cookies - auth.js // 导入 js-cookie 用于操作 cookies import Cookies ... 
- 使用 vue2 + element-ui 登录的时候的逻辑
			1. 自动校验表单逻辑 // 1. 自动表单验证 try { // 这个形式自动表单验证麻烦 // this.$refs.loginForm.validate((valid)=>{ ... }) ... 
- Exchange2016中搜索和删除邮件
			Exchange2016中搜索和删除邮件 在以前版本的 Exchange 中,可以运行 Search-Mailbox -DeleteContent 命令搜索并删除电子邮件.你仍可以在 Exchang ... 
- 函数计算平台 OpenFunction 在自动驾驶领域的应用
			嘉宾 | 霍秉杰 整理 | 王新 出品 | CSDN 云原生 2022 年 5 月 10 日,在 CSDN 云原生系列在线峰会第 4 期"ApacheSkyWalking 峰会"上 ... 
- jmeter-模拟带参数的请求与上传文件
			请求参数照着前端请求的样式填即可: header带content: header不带content_type: 总结:上传文件时headers里面不能带content_type参数 
- (系列八).net8 webApi后端框架轮子,欢迎下载。
			说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ... 
- 适用于 .NET 稳定的官方OpenAI库
			前言 今天给大家分享一个由 OpenAI 官方提供,旨在为 .NET 开发者提供方便的接口来访问 OpenAI 的 REST API.这个项目通过 NuGet 包的形式发布,使得 .NET 应用程序能 ... 
