如何跳出小程序五级页面的限制

前言:做小程序开发,就要在微信的规则内玩耍。最近做的小程序经常会有个报错:RangeError: Maximum call stack size exceeded。这意思是说小程序页面超过5级跳转了,应该怎么解决呢?

如何跳出小程序五级页面的限制_第1张图片


微信小程序官方文档中,关于页面的跳转,有三个API,两个跳转新页面的 API 分别为wx.navigateTo和wx.redirectTo,还有一个 API 名为wx.navigateBack,它用于返回上级页面。

wx.navigateBack在小程序的初始版本中只能回到上一个页面,在最新版本(0.10.102800)的更新中给navigateBack添加了一个参数delta,用于决定需要返回几层页面。

navigator组件的默认跳转方式与wx.navigateTo相同,而如果添加redirect属性,则与wx.redirectTo的跳转方式相同。

wx.navigateTo在官方文档中描述如下:

保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。

通过navigateTo跳转后,可点击左上角的按钮返回上一个页面。而如果多次调用navigateTo之后,就需要返回多次才能回到初始页面,这种交互更像是客户端打开一个新的view。因此,官方在此处有一个限制(最多五级)。

注意:为了不让用户在使用小程序时造成困扰,我们规定页面路径只能是五层,请尽量避免多层级的交互方式。

不过上述五层的限制只是针对navigateTo,redirectTo则无此限制。因为redirectTo的行为是:

关闭当前页面,跳转到应用内的某个页面。

因此,当页面个数超过五层时,应该用redirectTo来替换navigateTo,就可以避免Maximum call stack size exceeded的异常,但是redirectTo关闭当前页面的做法,有些场景并不适用,比如,从列表页进详情页面,如果进入详情页面时,关闭列表页面,再次back时,就没办法回到列表页面。

通过redirectTo跳转后,只是无法返回跳转前的页面,但并不是无法调用navigateBack,而是调用之后,会回到使用redirectTo跳转前的上一个页面。

页面栈可以通过getCurrentPages方法获取:

getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

这个方法也比较适用,在多层页面跳转中,你可能会用的到。

往期回顾

1.小程序开放网页功能,你读懂了嘛?

2.小程序风云榜|重要通知、小小签到、微友名片

3.1024程序员节

4.小程序有哪些优势,你都知道嘛?

5.如何确保行政的同学发布的通知,所有人都已查看?

6.为什么那么多人要做小程序?



知晓程序员,一个专注于微信小程序开发的程序员~

如果对我感兴趣,欢迎勾搭小助手微信<13718712821>,备注知晓程序员哦,欢迎讨论问题 & 一起探讨小程序人生~~

扫描下方二维码,实时了解小程序动态 & 小程序开发相关内容~

如何跳出小程序五级页面的限制_第2张图片

你可能感兴趣的:(如何跳出小程序五级页面的限制)