navigator标签使用navigate跳转最多十层问题

uniapp——navigator标签

navigate跳转引起的页面栈堆积问题
项目需要,使用redirect跳转会导致重定向,不利于用户体验。但是用navigate,当数目过多时,navigator不跳转。

<script>
	var app = getApp()
	export default {
		data() {
			return {
				isClick:false
			}
		},
		methods: {
				navTap:function(item){
					this.isClick = true;
					// 长度可以设置length>9,我用的时候,大于2可以满足需求,大于10反而会出现太多页面堆积
					var curPages = getCurrentPages().length;
					if(curPages>2) {
						uni.redirectTo({
							url:'/pages/a'
						})
					}else{
						uni.navigateTo({
							url:'/pages/a'
						})
					}
			},
		},
		onShow:function(){
			this.isClick = false;
		},
		//  监听页面卸载
		onUnload:function(e){
			if (!this.isClick) {
				uni.navigateBack({
					delta: 1,
				})
			}
		},
	<script>
<template>
	<view  @tap="navTap">跳转下一页面</view>
</template>

当页面栈层数到10时,navigate不能点击跳转,页面也没有报错,网上找了很多,综合根据我自己的理解整理出来,自己测试可以用的。

补充——

直接使用navigate
提交返回时,返回上一级页面并刷新某一函数实现数据更新

以下仅为示例:

let pages = getCurrentPages()
let prevPage = pages[ pages.length - 2 ];
// 触发上一页 upData 函数(并携带参数)
if (prevPage.route.indexOf('teach') == -1) {  // 返回的路径是否包含teach,用于一个页面不同按钮点击时返回不同的页面
		prevPage.$vm.upData("")
} else{
		prevPage.$vm.upData()
}
// 获取上一页栈
	uni.navigateBack({
		delta: 1
	})

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...