微信小程序navigateBack更新上一页数据

微信小程序开发过程中经常有这种需求,需要把当前页面数据传递给上一个页面,或者刷新上一页数据,但是wx.navigateBack()无法传递数据。

注:执行wx.navigateBack()回退至上一个页面,上一页面只会回调onShow方法

解决方案:

  • 上一页面在onShow方法刷新数据
  • 利用页面栈,在当前页面主动调用上一页面生命周期方法或普通方法

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

重点就在这里,在当前页面拿到上一个页面的实例对象,然后调用该对象的方法完成数据传递。

//登陆成功跳转
var pages = getCurrentPages(); //获取当前页面信息栈
console.log("pages.length: " + pages.length)
if (pages.length > 1) {
  //上一个页面实例对象
  var prePage = pages[pages.length - 2];
  //关键:上一个页面重加载
  prePage.onLoad()
  //返回
  wx.navigateBack({
    //delta: pages.length
    delta: 1
  })
}

这样就可以实现数据传递给上一个页面,要注意上一个页面必须使用wx.navigateTo跳转到当前页面,不能使用wx.redirectTo,这样会关闭上一个页面,导致当前页面无法获取上一页Page实例。

上一篇 微信小程序下拉刷新及上拉加载
下一篇 微信小程序实现摇一摇功能
目录
文章列表
1 Swift UI - 按钮(UIButton)
Swift UI - 按钮(UIButton)
2
Leaf - 美团的分布式唯一ID方案深入剖析
Leaf - 美团的分布式唯一ID方案深入剖析
3
Android架构之MVC、MVP、MVVM
Android架构之MVC、MVP、MVVM
4
为VuePress自动生成侧边栏分组的插件
为VuePress自动生成侧边栏分组的插件
5
微信小程序集成WeUI
微信小程序集成WeUI
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。