微信小程序传参回退首页且不能有左上角的返回键

时间:2021-2-20 作者:admin

首先业务场景是:

首页选择车型, 进入二级页面进行车系选择, 选好再进入三级页面选择具体车型. 三级选好之后跳回首页,将首页选择车型字样变成选择的车型

开发发现的问题:

  • 问题一

第一个想法是使用 wx.navigateTo({url:""})方式, url 传参进行数据传递,然而

这样做回到首页的时候左上角会有一个回退按键

  • 问题二

于是想到重定向的路由 wx.redirectTo({url:""}) 这样理论上是不会有返回按键的, 实际上重定向确实不会有返回按钮,但是

使用重定向在本项目中不适用 还是会有返回键

原因是有三级页面,首页跳第二级页面的时候还是需要返回的 所以只能使用 wx.navigateTo({url:""}), 等到三级页面的时候再使用 wx.redirectTo({url:""}) 就不会再有作用了, 必须是都是使用的重定向才可以

  • 问题三

后来找到一个 api wx.navigateBack({delta: 2}) 关闭当前页面,返回上一页面或多级页面.
这个方法正好可以使用.直接回退两个页面,回到首页.

不过传参是个问题, 首先想到的是数据缓存wx.setStorage,只不过略显麻烦,需要存储获取和删除

最终解决方法

api wx.navigateBack({delta: 2}) 中有句话 可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。 我们打印出获取的东西:

是一个数组 依次打开每个对象里面发现是每个页面的页面js里面的pages里的所有信息.. 然后你会发现 里面有 setData 方法, 那这样… 嗯, 这操作很骚. 我们之间可以在这个页面进行修改上一个或者上两个页面的 data 值了?!!!!

//在返回的函数方法内这样写
let pages = getCurrentPages();
let prevPage = pages[ pages.length - 3 ];  //这里就是获取到上某个页面 -3 就是上两级, -2 就是上一级 依次类推...
prevPage.setData({  
     car_type:this.data.cartype
})
wx.navigateBack({
     delta: 2
})

这样就大功告成!!!!!

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。