微信小程序传参回退首页且不能有左上角的返回键
发表时间:2021-1-5
发布人:葵宇科技
浏览次数:81
首先业务场景是:
首页选择车型, 进入二级页面进行车系选择, 选好再进入三级页面选择具体车型. 三级选好之后跳回首页,将首页选择车型字样变成选择的车型
开发发现的问题:
- 问题一
第一个想法是使用 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
})
复制代码
这样就大功告成!!!!!