微信小程序返回上一页携带参数

今日碰到一个需求,在奖品详情页跳转页面领奖后,返回到详情页需要把去领奖到按钮改为已领奖。

正常跳转页面时通过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) {
        //调取接口操作
    }
  }
通过上面的方法就可以实现带参数返回

你可能感兴趣的:(微信小程序返回上一页携带参数)