无论是在小程序还是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个页面的时候,给出提示,然后跳回上一个页面。

效果图

欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course

微信扫码加入猿天地知识星球

猿天地

本文固定链接: http://www.js-code.com/weixin/weixin_44696.html