小程序页面跳转bug优化记录,getCurrentPages 奇迹妙用解决问题
需求描述:我同事A做的是团餐页面,我做的是团餐地址管理页面,在团餐页面点击收货地址 进入我的地址管理列表页面选择地址后把地址信息address带到团餐页面,点击返回 回到首页。
过程1:
我和A说我想把带过去的数据存到localstorage里面去,在使用 wx.navigateTo 跳转到团餐页面,在团餐页面onShow 里定义一个方法去检查 localstorage里面有没有我存的数据 address,有的话读取localstorage的address 重新给收货地址赋值,没有的话设置收货地址为空,但是我同事觉得这样麻烦,于是让我把获取到的地址信息address转一下 let address = encodeURIComponent(JSON.stringify(address)) || ''后直接放在链接里 http://跳转的连接?address=${url},跳过去,他那边在onload里面接收数据,有的话证明是从地址管理跳转过去的,把获取到的信息解析出来给地址赋值。
问题1:
这个可以把数据带过去,但是出现了一个问题,就是通过 wx.navigateTo 从地址管理列表页面跳转到团餐页面后,在返回的话又跳到了地址管理页面,(团餐-----点击----->地址列表-----选中地址---->团餐-----返回----->地址列表------返回------>团餐),这样非常不友好。
过程2:
我发现了问题1的bug后,我和同事A沟通了一下,他说这样可行,但是我知道在测试那关肯定过不了,我在查了下微信小程序开发文档,有没有办法跳转到另一个页面不刷新且能把当前页面的数据带过去,文档里关于跳转相关的api,只有 wx.navigateBack(Object object)跳转 可以不让页面刷新也不会出现返回的问题,
api里面的 getCurrentPages 换这个api好像没用过,查了 下这个api : 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。 好像手的不是很明白,百度查了下这个 api的大概用法

这个方法貌似可以使用跨页面赋值,
我尝试了一下,,先在团餐页面data里定义一个变量 address:{} ,当点击地址列表的item的时候,把item信息赋值给address ,赋值后在跳转弄过去,在团餐页面onshow里 判断 address是否有值,有值就把值给收货地址赋值,在点击返回回到首页。成功解决了这个跳转带参数的问题,改好后和同事A沟通了一下,我说把这个跳转你的问题优化了一下,跳转比较友好,他也同意我最新的修改方案。

总结: 在当前页面通过 getCurrentPages 把上一级页面的data数据修改,再返回到上级页面,返回后在上级页面onshow里检查data数据是否有值?有值就渲染带过去的值

本文记录了一次小程序页面间跳转的bug修复过程,通过使用wx.navigateTo和getCurrentPages方法,解决了从地址管理页面传参到团餐页面,再返回时不重定向的问题。关键在于理解如何在页面间共享数据并保持页面状态一致性。
1240

被折叠的 条评论
为什么被折叠?



