微信小程序操作当前页面后返回上一级并自动刷新上一级页面数据

微信小程序的页面是由onLoad(页面加载)、onReady(页面初次渲染完成)、onShow(页面显示)、onHide(页面隐藏)、onUnload(页面卸载)五个周期构成;

实现返回上一页的时候其实是直接将隐藏的页面再显示出来,所以不存在页面的再次加载,

A页面 ——> B页面——>返回A页面(更新A页面数据)

解释:在A跳转B的过程实现是A页面隐藏,B页面初始化渲染; 返回过程是隐藏B页面显示A页面

第一种方法 :在A页面的onshow生命周期函数中更新数据

onLoad(){
    //数据的初始化操作
    init(){
 
    }
},
 
onShow() { //返回显示页面状态函数
    //错误处理
    //this.onLoad()//再次加载,实现返回上一页页面刷新
    //正确方法
    update(){
        console.log('我更新啦')
    }
}


ps: 在onShow中执行this.onLoad(),会导致页面第一次加载的时候数组加载两次!
造成原因:页面加载先执行onLoad,再执行的onShow,就会出现在onLoad加载一次数据,在onShow中执行this.onLoad()在加载一次数据。
解决办法:将不需要刷新的数据放在onLoad中执行,将需要刷新的数据放在onShow中执行!
 

第二种方法 :推荐使用的
在B页面中

//例如点击操作 触发下面的函数  bindtap="handleClick"

goBack(){
    let pages = getCurrentPages();   //获取小程序页面栈
    let beforePage = pages[pages.length -2];  //获取上个页面的实例对象
    beforePage.setData({      //直接修改上个页面的数据(可通过这种方式直接传递参数)
      txt:'修改数据了'
    })
    beforePage.go_update();   //触发上个页面自定义的go_update方法
    wx.navigateBack({         //返回上一页  
      delta:1
    })
},


在A页面中

//更新本页面
  go_update(){
    console.log('我更新啦')
  },
发布了151 篇原创文章 · 获赞 28 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_42543264/article/details/105504675