解决小程序路由超过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}`)
相关推荐
用户游民2 小时前
Flutter Provider原理以及用法
前端·flutter
Rust研习社2 小时前
告别环境混乱!使用 mise 管理你的开发环境
前端·后端·rust
小小荧2 小时前
Vue Native多分支迭代,Vue跨端原生生态迎来革新
前端·javascript·vue.js
EntyIU2 小时前
uv工程化项目指南
前端·python·uv
WebGirl3 小时前
如何在VS code中添加SKill
前端
marsh02063 小时前
49 openclaw故障排查:系统异常时的诊断方法
服务器·前端·青少年编程·ai·php·技术美术
Maimai108083 小时前
前端如何落地 SSE:从实时评论到可复用的实时数据 Hook
前端·javascript·react.js·前端框架·web3·状态模式·webassembly
冴羽3 小时前
JavaScript 9 个先有库再有 API 的故事
前端·javascript
欧阳天风3 小时前
vue+vite生产环境更新提示
前端·javascript·vue.js
靠谱品牌推荐官3 小时前
【架构实战】如何设计一套原生支持 GEO 大模型爬虫语义索引的 HTML5/CSS3 纯净白盒前端架构?
前端·爬虫·架构