微信小程序返回上一页携带参数
2019-04-19 本文已影响0人
丶dove丶
今日碰到一个需求,在奖品详情页跳转页面领奖后,返回到详情页需要把去领奖到按钮改为已领奖。
正常跳转页面时通过navigate或redirect时候的url来携带参数,然后在目标页面的onLoad函数参数中获取这些url参数。但是,这种方式只有在目标页面还没有创建的时候,才有效。因为一个页面的onLoad方法在页面的生命周期中,只执行一次。
- 在网上查到的方法如下:
onShow: function () {
var that = this;
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一页
prevPage.setData({
prize_id: that.data.id
})
}
在当前页面的onShow方法中,把从上一页传递过来的参数通过上面方法赋值。这种方式,是通过调用小程序的API: getCurrentPages(),来获取当前页面路由栈的信息,这个路由栈中按照页面的路由顺序存放着相应的Page对象,我们可以很容易的获取到上一级页面的完整Page对象,从而使直接调用Page对象的属性和方法成为可能。
- 然后在返回的页面通过onShow接收并判断参数,存在的话调取接口并进行渲染
onShow: function () {
var that = this;
let pages = getCurrentPages();
let currPage = pages[pages.length - 1]; //当前页
if (currPage.data.prize_id) {
//调取接口操作
}
}