0
点赞
收藏
分享

微信扫一扫

【mpvue】微信小程序返回到tab页面并刷新页面,在微信开发者工具运行正常,但是真机调试的时候跳转到了tab页面但不会刷新。getCurrentPages()获取的不是当前页面


1、问题描述

在「添加基金页面pages/addfund/main」添加完基金后,点击取消,会需要跳转到「基金页面pages/index/main」并且刷新出刚刚添加的基金

【mpvue】微信小程序返回到tab页面并刷新页面,在微信开发者工具运行正常,但是真机调试的时候跳转到了tab页面但不会刷新。getCurrentPages()获取的不是当前页面_mpvue

【mpvue】微信小程序返回到tab页面并刷新页面,在微信开发者工具运行正常,但是真机调试的时候跳转到了tab页面但不会刷新。getCurrentPages()获取的不是当前页面_真机调试_02


现在的问题是:

  • 在微信开发者工具中操作时:添加完基金后,会跳转到「基金页面pages/index/main」并且刷新出刚刚添加的基金
  • 在真机调试、预览时:在手机上操作添加完基金后,会跳转到「基金页面pages/index/main」但是不会自动刷新出刚刚添加的基金
2、相关代码以及原因分析

我们通过wx.switchTab跳转到「基金页面pages/index/main」,跳转成功后,通过​​getCurrentPages().pop()​​​方法获取当前页面栈中的最后一个页面(正常来说,这个页面就是「基金页面pages/index/main」),然后调用​​page.onPullDownRefresh()​​刷新这个页面

wx.switchTab({
url: '/pages/index/main',
success: function (e) {
console.log("that.$mp",that.$mp)
var page = getCurrentPages().pop();
console.log("page",page)
if (page == undefined || page == null) return;
page.onPullDownRefresh();
}
})

我们在代码中通过语句​​console.log("page",page)​​打印了一下当前的page。

  • 在微信开发者工具中打印结果如下:
  • 【mpvue】微信小程序返回到tab页面并刷新页面,在微信开发者工具运行正常,但是真机调试的时候跳转到了tab页面但不会刷新。getCurrentPages()获取的不是当前页面_mpvue_03

  • 在真机调试中打印结果如下
  • 【mpvue】微信小程序返回到tab页面并刷新页面,在微信开发者工具运行正常,但是真机调试的时候跳转到了tab页面但不会刷新。getCurrentPages()获取的不是当前页面_真机调试_04

  • 从上面两张图可以看出,在微信开发者工具和真机调试中打印出的page里面的route是不一样的。
  • 微信开发者工具上能刷新是因为这里的route是「基金页面pages/index/main」
  • 真机调试中不能刷新是因为route是「添加基金页面pages/addfund/main」所有实际上刷新了「添加基金页面」,没刷新「基金页面」
3、问题分析以及解决

页面到「基金页面」并刷新是通过先从页面栈中获取到「基金页面pages/index/main」,再执行「基金页面」下的刷新页面方法。

要解决这个问题,我们需要先了解一下页面栈。

API

页面栈表现

备注

wx.switchTab

页面全面出栈,只留下新的Tab页面

只能打开 tabBar 页面

wx.reLaunch

页面全面出栈,只留下新的页面

可以打开任意页面

从【2、相关代码以及原因分析】展示的代码中,我们可以看到现在用的方法是wx.switchTab。那么正常的流程是跳转到「基金页面pages/index/main」页面成功后,页面栈会被清空,只留下「基金页面」这个Tab页。在微信开发者工具确实是这样的。但是在真机调试中,最后留下的页面是「添加基金页面pages/addfund/main」。应该是微信小程序的一个bug了吧。

我们的解决方案是将wx.switchTab换成wx.reLaunch。这样就正常了,像下面这样:

wx.reLaunch({
url: '/pages/index/main',
success: function (e) {
console.log("that.$mp",that.$mp)
var page = getCurrentPages().pop();
console.log("page",page)
if (page == undefined || page == null) return;
page.onPullDownRefresh();
}
})


举报

相关推荐

0 条评论