微信小程序使用navigateBack返回上一页时如何传递参数

需求

A页面的数据跳转到B页面,B页面将A页面传递过来的数据进行处理后,将处理结果返回给A页面,并且路由栈中不会多余页面

尝试办法

var pages = getCurrentPages();
var prevPage= pages[pages.length - 2]; //上一个页面
prevPage.setData({
    img_url: e.tempFilePath,
    isShow: false,
});
wx.navigateBack({
    delta: 1,
});

经过尝试发现传递给上一个页面数据会丢失,目前还没找到具体原因

解决办法

通过uni.$emit、uni.$on、uni.$off实现

// B页面
uni.$emit("clipImg", {
    isShow: false,
    img_url: e.tempFilePath,
});
// A页面
onShow() {
    uni.$on("clipImg", (data) => {
      this.img_url = data.img_url;
      this.isShow = data.isShow;
    });
},
onUnload() {
   uni.$off("clipImg");
},

 

posted @ 2023-12-09 20:50  南无、  阅读(1422)  评论(0)    收藏  举报