2

在小程序开发过程中,我们会遇到这样的需求,点击A页面上的某个元素跳到B页面(使用navigateTo),在B页面上处理完数据之后再回到A页面,可是如果用navigateTo从B页面跳到A页面由于调用了onLoad方法,原来A页面填好的数据也没了,那么如何拿到B页面的值呢?用globalData?不够安全。用storage?有大小限制,而且超过一定时间会被清理。这时候就是navigateBack()派上用场的时候了,话不多说,直接上代码


B页面
在B页面保存需要回传的值

 select(e){
    let pages = getCurrentPages()  //获取当前页面栈的信息
    let prevPage = pages[pages.length - 2]   //获取上一个页面
    prevPage.setData({   //把需要回传的值保存到上一个页面
      info: e.currentTarget.dataset.item
    });
    wx.navigateBack({   //然后返回上一个页面
      delta: 1
    })
   }

A页面
现在回到A页面取值

onShow: function() {
    let pages = getCurrentPages();
    let currPage = pages[pages.length - 1]; //当前页面
    let info = currPage.data.info
    if (info) {
      this.setData({
        name: info.name,
        tel: info.tel,
        company: info.company,
        address: info.address
      })
    }
  },

现在我们在A页面拿到了从B页面回传回来的值


置酒高殿上
24 声望0 粉丝