宝哥软件园

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

编辑:宝哥软件园 来源:互联网 时间:2021-12-12

开发小程序,一定要在微信的规则内玩。最近小程序经常出现错误:Range错误:超出最大调用堆栈大小。这意味着小程序页面跳过了第5级。应该如何解决?

如何跳出小程序五级页面的限制(图1)

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

Wx.navigateBack在小程序的初始版本中只能返回到上一页,在最新版本(0.10.102800)的更新中,会在navigateBack中添加一个参数delta来决定需要返回多少页。

导航器组件的默认跳转模式与wx.navigateTo相同,但是如果添加了重定向属性,则与wx.redirectTo相同

Wx.navigateTo在官方文件中描述如下:

保留当前页面,跳转到应用程序中的一个页面,并使用wx.navigateBack返回到原始页面。

导航跳转后,可以点击左上角的按钮返回上一页。如果多次调用navigateTo,则需要多次返回才能回到原始页面。这种交互更像是客户端打开一个新视图。因此,官方在这里有一个限制(最多五个级别)。

注意:为了防止用户在使用小程序时造成麻烦,我们规定页面路径只能是五层。请尽量避免多层次的互动。

但是以上五层的限制只是导航器才有,redirectTo没有这样的限制。因为redirectTo的行为是:

关闭当前页面并跳转到应用程序中的一个页面。

因此,当页数超过五个级别时,navigateTo应该由redirectTo替换,以避免超出最大回调大小的异常。但是重定向关闭当前页面的做法在某些场景下不适用,比如从列表页面进入详细页面,进入详细页面时关闭列表页面,再次返回列表页面,没有办法返回。

在通过redirectTo跳转后,只是不能返回到跳转前的页面,但并不是不能调用navigateBack,而是调用后会返回到通过redirectTo跳转前的上一页。

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

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

这种方法也适用。您可以在多层页面跳转中使用它。

更多资讯
游戏推荐
更多+