问题描述:为了性能更加优化,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'
})
}
}
}