在做小程序的时候,经常会遇到在其他页面修改当前表单页面值的情况。(个人觉得这种表单页面需要跳转到其他页面填写的方法十分繁琐,但是产品要,没办法)当时想到的办法是在URL里面跳转的时候用key:value的形式来进行传参,但是在返回上一页的时候,调用的生命周期是onShow的方法。查看了官方文档,onShow方法是没办法从url接收到参数的。那么我又想到了一个方法,用storage来进行传参。但是这个方法也是比较笨的方法,使用多了会造成storage的混乱,不利于数据维护。那么我们有没有办法进行优雅的跨页面传参呢?
当当当当!
官方有一个API是getCurrentPages,可以获取页面栈的所有信息。它的长度代表了当前是第几个栈,而且我们可以直接修改某个栈的数据。相信这里有很多童鞋已经明白了。
let pages = getCurrentPages(); //获取所有推宅
let prevPage = pages[pages.length - 2]; //上一个页面
// 获取上一个页面的值
let rData = prevPage.data.addData;
//设置上一个页面的data的值
rData.jobName = e.currentTarget.dataset.value
prevPage.setData({
addData: rData
}, function () {
wx.navigateBack()
});
一定要注意的是,redirectTo和navigateTo方法返回到指定页面,会造成数据清空的情况,所以这里要用navigateBack方法返回上一页。
评论 (0)