在微信小程序中打开的页面不能超过10个,达到10个页面后,就不能再打开新的页面

Posted _揽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在微信小程序中打开的页面不能超过10个,达到10个页面后,就不能再打开新的页面相关的知识,希望对你有一定的参考价值。

微信小程序路由跳转有个隐藏的坑,就是 wx.navigateTo打开新页面,最多只能打开10个,超过10个之后就没反应,控制台也不会报错。

 方案一:navigateTo不行,用redirectTo

小程序路由跳转的方式有五种,分别是wx.navigateTo(打开新页面,新页面入栈)、wx.redirectTo(重定向,当前页面出栈,新页面入栈)、wx.navigateBack(返回,页面不断出栈,直到目标返回页)、wx.switchTab(切换tab页面,页面全部出栈,只留下新的 Tab 页面)、wx.reLaunch(页面全部出栈,只留下新的页面)

由此产生了第一种方式,当页面栈超过 10 时,直接用redirectTo。

方案二:维护自己的小程序页面栈

9层(含9层)以内时:走小程序自己的历史栈就ok了,跳转时候更新一下逻辑栈,这没啥可说的
从9层跳转10层:需要把第9层重定向到中转页,再由中转页跳转到10层
10层以后跳转:在navigateTo方法中处理,到10层之后,再跳转就第10层页面一直做redirectTo(重定向)操作了
10层以上返回:会返回到中转页,由中转页判断,具体返回到哪个页面,然后navigateTo(跳转)过去
从10层返回到9层:返回到中转页,将中转页redirectTo(重定向)到第9层页面
9层内的返回:直接返回就好了,返回时候不会更新逻辑栈,但没有关系,因为只有中转页才会用到逻辑栈
逻辑栈更新机制:
跳转、返回中转页时更新
navigateTo时更新
redirectTo时更新
reLaunch时更新
navigateBack时更新

 小思路:失败的坑

本来想打算看看能不能当小程序页面栈超过十个以后就删除页面栈中的第一个,来以此循环,但是失败了

App打开微信小程序并传递参数

在App中打开小程序的功能发布有一段时间了,网上关于这个的新闻很多,但是技术资料并不多,我们有项目需要尝试这种方式,特意试了一下,发现还是有一些坑,分享给大家。

首先微信官方文档在微信.开放平台上,截图如下:

 

 
技术分享图片
 

一. 开发前先得做好几个准备工作:

  1. 在微信开放平台上有账号而且有通过的移动应用。

技术分享图片

 

2.在微信公众平台有账号而且有小程序,最好发布为体验版本。

3.在微信开放平台把对应的移动应用和小程序建立关联。这个过程来回需要登陆和扫二维码n次。

 

二. 在android和ios调试官方sample打开小程序

注意官方下载的sample配置的证书和bundle id必须和在微信开放平台对应的移动应用使用的一致。


 
技术分享图片
image.png

打开小程序的核心代码不多,里面有几个参数必须设置正确

String appId = "wxd930ea5d5a258f4f"; // 填应用AppId
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43f693ca31f"; // 填小程序原始id
req.path = path;                  //拉起小程序页面的可带参路径,不填默认拉起小程序首页
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);

上面几个参数再详细说一下:

  • appId指的是微信开放平台对应移动应用的appId,而不是小程序的appId,这里注意
  • userName是微信公众平台里小程序的原始Id,是gh开头的。


     
    技术分享图片
    image.png
  • req.path就是打开小程序的路径,传递参数就是通过这个来传递,但是文档上并没有说,试出来的。
req.path="page/index?key1=xxx&key2=yyy";//类似http的url方法来传递参数

*req.miniprogramType选的是开发和体验版本,正式版本的小程序没有测试过。

ios和android类似,不再细说。

三. 在小程序端接受App传递过来的参数

上面的App打开的path是‘path/index‘,所以需要把App的onLaunch事件定义在page/index.js上


 
技术分享图片
 

这里的options.scene是1069,这个场景id表示从app打开。
options.query.key1和options.query.key2就是app打开小程序传递的参数。



作者:voxer
链接:https://www.jianshu.com/p/c08b54299e8a
來源:简书

 










以上是关于在微信小程序中打开的页面不能超过10个,达到10个页面后,就不能再打开新的页面的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序如何查看是不是超过2m

自己怎么开发小程序?10分钟制作微信小程序教程

微信小程序有哪些?

小程序可以在微信内跳转吗?

微信小程序的一些限制与记录

在微信小程序中绘制图表(part2)