之前肯定有很多 V 友遇到这个问题, 例如从页面的 1 用 wx.switchTab()跳转到 tabBar 时,我们的数据没有更新, 或着说我们的需求是页面 1 发布了新内容,switchTab 页能及时刷新后台数据显示。
接下来我们讲下 weChat 的跳转方式:
小程序跳转的几种方式有 wx.navigateTo(), wx.redirectTo(), wx.reLaunch(), wx.switchTab()等。
其他的 V 友有空自己试下,我们重点研究切换到 tabBar 的两种方式。 wx.switchTab()//跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面; wx.reLaunch()//关闭所有页面,打开到应用内的某个页面。
我们回到根源,我们 wx.switchTab()跳转是不会触发 onLoad 事件从而数据不会更新, 而 wx.reLaunch()则是会触发 onLoad 事件, 这样解决了从页面切换到 tabBar 页面不会刷新的坑
其实官方还提供了一个 API--wx.redirectTo(), 对于这个 API 官方的说法是(关闭当前页面,跳转到应用内的某个页面。) 我在 demo 测试的时候并未生效。可能是场景不同,有兴趣的 V 友可以去尝试下。
细心的 V 友可能都会去试过了知道了这些特性,还请各位 V 友多多指教
1
SakuraKuma 2018-08-08 13:05:19 +08:00 1
这并不是坑。
onShow 了解一下 |
2
TypeNANA 2018-08-08 13:06:48 +08:00 1
onShow 在页面切换到前端显示的时候触发,应该可以解决你的需求
|
3
Gavinpeng OP @SakuraKuma 这的确是可以做刷新操作,但场景是从一个无 Bar 的页面,发布成功了,过去的时候是我说的不够明白我的锅
|
5
SingeeKing 2018-08-08 14:25:04 +08:00 1
redirectTo 只能 redirect 到非 TabBar 界面
需要刷新数据请使用 onShow |
6
Gavinpeng OP @SingeeKing 明白感谢分享
|
7
SakuraKuma 2018-08-08 14:34:13 +08:00 1
@Gavinpeng #3 非 tabbar 页面会销毁。so~
|
8
Gavinpeng OP @SakuraKuma onShow 里面做更新操作的话那我跳转的时候会触发 2 次更新请求
|
9
SakuraKuma 2018-08-08 14:48:12 +08:00 1
@Gavinpeng #8 ?? 2 次?
你应该是把 onload 的更新数据移动去 onshow,而不是拷贝一份去 onshow。 |
10
Gavinpeng OP @SakuraKuma 清楚明了感谢我 V 友
|