在微信小程序的开发中,难免有些地方会有需求说返回上一页的功能,或者是通过返回上一页来实现产品说述的需求。
正常情况下使用
wx.navigateBack({
delta: 1
})
是没有办法添加参数的。
我们可以通过设置全局变量或者通过设置storage缓存来达到目的
但是对于全局变量来说,一般是不建议使用的。全局任何位置都可访问,都可修改。容易出现不必要的麻烦。
设置wx.setStorage()缓存的话,有些数据是以Object形式或者是以Number、Array形式的话。1是接收处理不是很方便,2是本地缓存空间大小也存在限制。一旦存的多会出现很多麻烦的事情。
这时使用微信小程序中的getCurrentPages()方法就可以获取想要页面的页面栈,然后直接给上一个页面中的Data赋值。
具体操作如下:
let pages = getCurrentPages();
let currentPage = pages[pages.length - 1]; // currentPage为当前页面
let prevPage = pages[pages.length - 2]; // prevPage为上一页的页面
/** 然后可以通过setData({})来给页面赋值了。 如: */
let id = 123;
prevPage.setData({
Id: id
})
/** 然后再通过 navigateBack() 返回到之前的页面就可以看到页面的Data中数据的改变了 */
wx.navigateBack({
delta: 1
})
需要注意的是,在MpVue中使用这种方法来获取页面的路由参数。但是如果开启了ESLint的话会有报错,如下:
解决方案就是点击上图中的快速修复,然后再点击Disable no-under for this line即可,如下:
这时,在let pages = getCurrentPages();上方会出现一行“注释”
// eslint-disable-next-line no-undef
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
此时也就不会再有报错信息来。
getCurrentPages()方法详细使用信息请参考:
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html?search-key=getCurrentPages