微信小程序wx.navigateTo层叠5次限制,特殊情况的建议
小程序页面的实例使用栈的数据结构存储,栈内元素最多5个(换一种方式说,就是用户最多能点击5次返回),微信小程序能在栈中相对高层某个页面调用其他相对低层的页面实例的方法。
小程序三种页面跳转API 的区别在于:
- wx.navigateTo 不会将旧页面出栈,会将新页面入栈。(栈内元素个数增加,栈内元素5个时,不能再跳转)
- wx.redirectTo 会将栈顶的旧页面出栈,再将需要跳转到的页面入栈(栈内元素个数不变);
- wx.navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素,即变成当前页面;也可以连续出栈好几个元素(大于栈内元素的个数则返回首页)返回栈中的某个页面。
结合下面一个例子对上面的内容的理解:
有一个小程序包含 A、B、C、D 四个页面,A 为首页。小程序启动后,在 A 页面中,此时栈中有一个元素A,我们通过 navigateTo 跳转到 B 页面,然后在 B 页面中再通过 navigateTo 跳转到 C 页面。此时页面栈中就会包含三个元素,分别为 A、B、C 三个页面。而此时如果通过 redirectTo 跳转到 D 页面,redirectTo 会将栈顶页面出栈,即将 C 页面出栈,再将 D 页面入栈,这时候,页面栈中的元素则会变为 A、B、D。此时如果在 D 页面调用 navigateBack,会发现不是返回 C 页面,而是返回到了 B 页面。当然也可以直接在D页面返回A,设置navigateBack的delta参数为2。
特殊情况,减少navigateTo的使用###
描述###
举个栗子:比如小程序的商城,在用户下单的页面(下面简称:下单界面)很多时候用户需要选择收获地址,然后程序根据用户的选择再返回该界面显示用户选择的收获地址是什么。可能需要在用户的下单界面跳转到地址界面,地址的界面可能有编辑地址之类的操作,用户选择地址后返回下单界面,显示刚刚用户选择的收获地址是什么。这个时候可以采用以下方法,减少navigateTo的使用。很多情况下都会有画圈这样的操作,就是经过一系列的界面后取得数据又返回了原来的界面,这个时候可以使用。
编辑完当前页面返回数据到上一页更新,假设当前在首页A页面,需要跳转到B页面采集用户的选择的数据,然后在返回A界面更新显示。代码例子如下
//A界面
Page({
data: {
userName: ''
},
getBackData: function(name){
this.setData({
userName: name
})
}
})
//B页面
Page({
edtinputname: function (e) {
var name="张三";
var pagelist = getCurrentPages();
if(pagelist.length > 1){
//获取上一个页面实例对象
var prePage = pagelist[pagelist.length - 2];
prePage.getBackData(name);
wx.navigateBack({
delta: 1
})
}
})
这样能够使得取得数据但不会增加栈中的元素个数,减少navigateTo的使用
微信小程序wx.navigateTo层叠5次限制,特殊情况的建议的更多相关文章
- 微信小程序 wx.navigateTo()传参及多个参数方法
var workModeAndPriceList = res.data.data.workModeAndPriceList; //var result = JSON.stringify(workMod ...
- 微信小程序wx.navigateTo页面不跳转
排查后发现: 若是在全局app.json中配置了tabBar,引用的链接与wx.navigateTo页面跳转url地址相同就无法实现跳转.
- 微信小程序——wx.navigateTo点击后没反应
首先,检查你跳转的目标路径是不是属于tabBar,若属于,且当前页面存在tabBar时,wx.navigateTo方法是失效的. 此时可用wx.switchTab方法,并记得在app.json中的&q ...
- 微信小程序wx.request接口
微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...
- 监控微信小程序wx.request请求失败
在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request ...
- 微信小程序wx.showActionSheet调用客服信息功能
微信小程序wx.showActionSheet调用客服消息功能 官方文档的代码: wx.showActionSheet({ itemList: ['A', 'B', 'C'], success (re ...
- 微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
微信小程序上传图片的时候,如果是多图片上传,一般都是直接用一个循环进行wx.uploadFile 这个在电脑上面测试与苹果手机上面都不会有什么问题 但当用安卓测试的时候,你会发现小程序会提示一个the ...
- 微信小程序wx.request请求用POST后台得不到传递数据
微信小程序的wx.request请求,method设为POST并向后台传递数据,但从后台返回的信息来看后台并没有获得传递的数据 wx.request({ url: 'url' ...
- 坑:微信小程序wx.request和wx.uploadFile中传参数的区别
微信小程序中通过组件<form>提交表单的时候,在js中通过e.detail.value得到所提交表单的json格式数据.一般提交表单我们都是通过wx.request请求,提交表单数据,通 ...
随机推荐
- 【NO.10】Jmeter - 一个完整的录制脚本的过程
上1篇介绍了"使用Jmeter对一个接口地址或者一个页面地址执行N次请求",也就是你自己干了一件从"零"开始的事情. 那么这1篇介绍"如何使用Jmeter录制'访问一个接口地址或者一个页面地址'的脚本 ...
- HTML indexedDB数据库—简单示例
indexedDB数据库的基本概念:在HTML5中,新增一种被称为"indexedDB"的数据库,该数据库是一种存储在客户端本地的NoSQL数据库. <!DOCTYPE ht ...
- FPS手游如何脱颖而出?看《CF手游》的性能突破之路
WeTest导读 俗话说:用户体验不谈性能就是耍流氓. 在PC游戏上的性能问题并没有那么明显, 加个内存换个CPU或者刷个主频就能轻松搞定:到了手游时代后情况则显得比较严峻,捉襟见肘的内存使得资源加载 ...
- SQL连接操作
一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...
- Android 划屏切换调用finish()方法闪屏问题
找了许多资料,偶然发现有种解决方法,就是修改style.xml里的Theme,有些NotitleBar,透明主题直接就能将此问题解决 原理也很简单,如果透明,背景色既为透明色,调用finish()时虽 ...
- Go语言学习笔记(八)golang 操作 Redis & Mysql & RabbitMQ
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Reids 安装导入 go get github.com/garyburd/redigo/redis import ...
- 关于Alipay支付宝接口(Java版)
支付宝开发文档:https://b.alipay.com/order/techService.htm 1.alipay 双功能支付简介 2.alipay 提交支付订单 3.alipay 整合双功能支付 ...
- windows管理命令
执行msi程序 msiexec /package mysql-installer-community-5.7.18.0.msi rem 管理员DOS窗口执行这个命令,开始卸载mysql 杀死进程 ta ...
- 【Centos7】安装memcached
1.Linux系统安装memcached,首先要先安装libevent库. 安装libevent库有两种方式 (1)rpm安装 yum install libevent libdeve (2)源码包安 ...
- BotVS配置托管者-基于新浪云
1. 创建SAE应用 登录新浪云平台,点击创建新应用 2. SAE环境部署 在新应用中选择自定义 相应选项如下 开发语言:自定义 运行环境:云容器 语言版本:自定义 部署方式:手工部署 操作系统:系统 ...