解决小程序路由超过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}`)
相关推荐
BUG创建者3 分钟前
uni 拍照上传拍视频上传以及相册
前端·javascript·音视频
就是帅我不改10 分钟前
敏感词过滤黑科技!SpringBoot+Vue3+TS强强联手,打造无懈可击的内容安全防线
前端·vue.js·后端
JackJiang11 分钟前
转转客服IM系统的WebSocket集群架构设计和部署方案
前端
codeGoogle11 分钟前
大厂研发之谜:千亿投入砸出利润大缩水
前端·人工智能·后端
菲兹园长33 分钟前
CSS(展示效果)
前端·javascript·css
我的收藏手册1 小时前
性能监控shell脚本编写
前端·git·github
fantasy_arch1 小时前
SVT-AV1编码器中实现WPP依赖管理核心调度
java·前端·av1
香香甜甜的辣椒炒肉1 小时前
vue(7)-单页应用程序&路由
前端·javascript·vue.js
高级测试工程师欧阳1 小时前
HTML 表格基础
前端
不买Huracan不改名1 小时前
安装Codex(需要用npm)
前端·npm·node.js