微信小程序通过navigateBack返回上一页时通过getCurrentPages()设置上一页Data中的值 微信小程序返回上一页传递参数 传参

在微信小程序的开发中,难免有些地方会有需求说返回上一页的功能,或者是通过返回上一页来实现产品说述的需求。
正常情况下使用
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的话会有报错,如下:
MpVue中使用getCurrentPages()时,ESLint的报错信息
解决方案就是点击上图中的快速修复,然后再点击Disable no-under for this line即可,如下:
MpVue中使用getCurrentPages()时,ESLint的报错信息的解决方案
这时,在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值