无论是在小程序还是APP中,打开一个页面其实就是创建了一个新的View对象,一层层叠加的。当点击页面的回退按钮就是把当前页面关闭。
这个过程中会涉及到一个问题,就是打开页面的数量。在某些设计下,比如一个商品详情页面中会推荐其他的商品,这些商品点进去就是详情页面。详情页面中又有推荐,又可以点进去。这样重复下去打开的页面就会越来越多。
如果不做限制,当打开数量到一定程度的时候肯定会卡死了。在微信小程序中打开的页面不能超过10个,达到10个页面后,就不能再打开新的页面。
之前出现这个问题,还以为是Bug,是不是卡死了,后来发现只要回退一个页面又可以重新打开了。才发现了最大10个页面的限制。
特意调研了其他公司的小程序,发现确实有这个问题。我这边就做了一个提示告诉用户不能打开这么多页面,不然用户会一脸茫然,点着点着就点不了。
每个页面都会需要跟后台交互加载数据,我这边在统一的Http请求中进行判断。
var pages = getCurrentPages();
console.log("pages:" + pages.length);
if (pages.length == 10) {
wx.showToast({
title: "页面打开太多,请回退关闭几个页面",
icon: 'none',
duration: 2000
})
setTimeout(() => {
wx.navigateBack({
})
}, 2000)
return;
}
当打开第10个页面的时候,给出提示,然后跳回上一个页面。