解决小程序路由超过10层限制

新建 navroter.js

javascript 复制代码
// 路由判断,小程序路由超过10层限制
// 避免小程序商品重复切换导致页面到结算单页时无法跳转到收货地址页,所以这里层级限制最大数为8
const MAX_VALUE = 8
export function navigateTo(url) {
    let pages = getCurrentPages()
    let dlt = ''
    // 查找目标页在页面栈的位置
    for (var i = 0; i < MAX_VALUE; i++) {
        if (pages[i]) {
            if (pages[i].$page && pages[i].$page.fullPath && (pages[i].$page.fullPath == url)) {
                dlt = i + 1; //目标页在栈中的位置
                break;
            }

        }
    }
    // 如果有重复则返回到页面栈页面
    if (dlt) {
        uni.navigateBack({
            delta: pages.length - dlt
        })
    } else {
        if (pages.length < MAX_VALUE) {
            uni.navigateTo({ url: url })
        } else {
            uni.redirectTo({ url: url })
        }
    }
}

main.js 全局引入

javascript 复制代码
import { navigateTo } from '@/utils/navroter.js';
Vue.prototype.navigateTo = navigateTo;

使用

javascript 复制代码
this.navigateTo(`/goods-module/goods?goods_id=${goods.goods_id}`)
相关推荐
东东51615 小时前
基于ssm的网上房屋中介管理系统vue
前端·javascript·vue.js
harrain16 小时前
什么!vue3.4开始,v-model不能用在prop上
前端·javascript·vue.js
fanruitian1 天前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo1 天前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk1 天前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
2501_944525541 天前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好1 天前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
刘一说1 天前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
徐同保1 天前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js
刘一说1 天前
Vue 导航守卫未生效问题解析:为什么路由守卫不执行或逻辑失效?
前端·javascript·vue.js