在做小程序的时候,经常会遇到在其他页面修改当前表单页面值的情况。(个人觉得这种表单页面需要跳转到其他页面填写的方法十分繁琐,但是产品要,没办法)当时想到的办法是在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方法返回上一页。

标签: 小程序, getCurrentPages, 跨页面传参, 页面传参

评论已关闭