使用场景:
从A页面跳到B页面,在数据操作后要返回A页面(使用uni.navigateBack()返回),
要求:
携带参数返回A页面,不使用链接带参数返回,不用使用缓存:uni.setStorageSync()储存数据等情况下怎么传递参数
可使用解决方案:
方法一:使用getCurrentPages() 函数获取上一页面栈的实例,可使用$vm调用A页面方法传递参数(h5端可用)
//A页面
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
prevPage.$vm.backUpdatePages({//调用A页面的backUpdatePages方法传参
isUpdatePages: true
})
uni.navigateBack();
//B页面
methods: {
backUpdatePages(obj){
console.log('===========obj', obj)
}
}
方法二:使用getCurrentPages() 函数获取上一页面栈的实例,A页面的onShow()传递参数(h5端不可用)
//A页面
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
prevPage.onShow({//调用A页面的onShow()传参
isUpdatePages: true
})
uni.navigateBack();
//B页面
onShow(option) {
//调用用prevPage.onShow传参,A页面onshow会执行两次,
//第一次调用prevPage.onShow()执行一次会携带参数,
//页面的生命周期onShow执行一次没有参数
console.log('===========option', option)
}