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

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

浏览量:486 时间: 来源:猫宁一
1、问题描述

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

  • 在微信开发者工具中操作时:添加完基金后,会跳转到「基金页面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。

  • 在微信开发者工具中打印结果如下:小程序

  • 在真机调试中打印结果如下小程序
    从上面两张图可以看出,在微信开发者工具和真机调试中打印出的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();  } })

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎