解决uniapp微信小程序uni.navigateTo跳转限制10层的问题

问题描述:为了性能更加优化,uniapp在使用uni.navigateTo跳转时,对页面栈限制最大10层,超过10层时跳转会出现问题。


针对这个问题,目前我用的有2种解决方法:

第一种:在整个流程不超过10页时,在结果页返回第一页,在点击事件和页面销毁的事件中同时使用uni.navigateBack,示例如下:

methods: {
    
    
	completeBtn(){
    
    
		uni.navigateBack({
    
    
				delta: 3
				});
			}
		},
onUnload() {
    
    
	uni.navigateBack({
    
    
		delta: 3
	});
}	

第二种:使用getCurrentPages()方法获取栈中的页面数,如果大于等于10层,则使用redirectTo()方法进行跳转
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

		onLoad(opts){
    
    
			let pages = getCurrentPages();
			// 获取页面栈总页数
			this.pagesCount = pages.length;
		},
		methods:{
    
    
			pushPage(url){
    
    
				// 如果页面栈总数大于10
				if(this.pagesCount >= 10){
    
    
					// 使用重定向跳转页面
					uni.redirectTo({
    
    
						url: '/pages/news/index?id=3'
					})
				}else{
    
    
					// 如果页面栈总数小于10,则打开新页面
					uni.navigateTo({
    
    
						url: '/pages/news/index?id=3'
					})
				}
			}
		}

猜你喜欢

转载自blog.csdn.net/m0_47791238/article/details/130177746