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 ...
随机推荐
- LeetCode题集-4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解
题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 作为目前遇到 ...
- Qt表格入门
摘要 表格作为数据展示的界面,会在很多场景下使用.Qt为我们提供了使用简单方便和扩展性强的表格视图,这里做一个简单的入门整理. 个人能力有限,有错误欢迎留言指正,如果你有更好的方法,也 ...
- std::vector 和 std::map 都支持以下比较运算符
在 C++ 标准库中,std::vector 和 std::map 都支持以下比较运算符: ==(相等运算符) !=(不等运算符) <(小于运算符) <=(小于等于运算符) >(大于 ...
- Android dtbo(3) 编译和验证
您可以使用设备树编译器 (DTC) 编译设备树源文件.不过,在将叠加层 DT 应用于目标主 DT 之前,您还应该通过模拟 DTO 的行为来验证结果. 1. 通过DTC进行编译 构建主 DT .dts ...
- vue合计行添加点击事件
项目开发中做统计报表的时候,用到了合计功能.这个直接添加el-table已经封装好的show-summary属性就可以,但是如何给合计单元格添加点击事件呢?@cell-click="cell ...
- Promise 有几种状态,什么时候会进入catch?
Promise 有几种状态 三个状态:pending.fulfilled.reject 两个过程:padding -> fulfilled.padding -> rejected Prom ...
- 014 Python 的数据类型(数字、字符串、列表、字典)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/24 20:31 # Filename:014 Python 的数据类型( ...
- kotlin关键字与操作符
硬关键字:始终解释为关键字,不能用作标识符 as - 用于类型转换 - 为导入指定一个别名 as? 用于安全类型转换 break 终止循环的执行 class 声明一个类 continue 继续最近层循 ...
- mongo对文档中数组进行过滤的三种方法
前言 在mongo中数据类型有很多种,常见的包括: 数据类型 例子 描述 String { "x" : "foot" } 字符串.存储数据常用的数据类型.在 M ...
- Cut the Sequence(单调队列DP+set)
题面 大意:一段长度为n的序列,分成若干段,每段值的总和不能超过m,求各段中最大值加起来的最小值. 其实最朴素的DP还是很好想的,以f[i]表示i及i以前已经分好所需的最小值,a[i]表示i点的值,那 ...