uniapp 带参返回上一页的几种技巧及总结

10,997 阅读1分钟

在做uniapp项目的时候,会用到页面之间相互跳转的功能,有几个点和坑,现在总结下。

  • A页面跳转到B页面传参:
    uni.navigateTo({
        url:`../myTicket/scanRecharge/scanRecharge?qrcode=${res.result}`
    })
    
    B页面接收参数:
    onLoad(option) {
       this.qrcode = option.qrcode + '='
       this.getScanResult()
    }
    
    注意:此事列是将二维码结果在url地址上传递过来,用onLoad方法时,会自动将二维码最后的“=”截取掉,如将二维码作为接口参数的需要,请手动拼接“=”
    
  • 那么,B页面返回上到A页面又如何传参呢?
    B 页面代码:
    getBack(name) {
       // 获取当前页上的栈(数组形式)
       var pages = getCurrentPages()
       //上一页面 
       var prevPage = pages[pages.length - 2] // (pages.length - 3 上上页 pages.length - 1当前页,以此类推)
       prevPage.setData({
           //直接给上一个页面赋值
           chooseName: name // 注意: name必须是A页面data定义过得字段
       })
       // 返回上一页
       wx.navigateBack({delta: 1})	
    },
    
    
    A 页面代码:
    onShow() {
       this.pages = getCurrentPages()
       this.currPage = this.pages[this.pages.length - 1] //当前页
       // 直接用this.currPage.data去取B页面传递过来的数据
       this.chooseName = this.currPage.data.chooseName
    },
    

    注意:

    1:name必须是A页面data定义过得字段!

    2.接收返回的事件必须写在onShow方法里面,下级返回当前页会触发!

    3.A跳转到B页面,必须用navigateTo,此方法会保留之前页面,别的方法会销毁当前页面,否则拿不到当前栈!