为什么不建议在微信小程序的TarBar上检查统一登录后跳转页面

1.问题发现

最近一个微信小程序,在tarbar上做了登录检查:当用户点击tarbar“我的"和”购物车“时,会请求后台API检查用户是否登录,如果未登录,则跳转一个统一的登录界面。

登录界面有两个按钮,一个登录,一个取消登录(不要问为什么,因为微信官方宣:”在体验小程序功能后,用户主动点击登录按钮后触发登录流程,且为用户提供暂不登录选项。“)

而问题来了,当用户不想登录,点击取消登录跳转首页的代码如下:

wx.switchTab({
     url: '/pages/index/index',
   });

用户点击取消跳转后,隔了1~2秒,又重新跳转回登录界面了。

2.调试

debug发现如下流程:

点击取消登录按钮-->跳转进入首页-->小程序的VM悄悄重载”我的页面“-->检查是否登录-->跳回登录页面。这样循环多次,而在微信开发者工具上没问题,Iphone6/Ihone8/IPX可能是所有手机上会有循环问题。

一脸朦逼。。。。。

3.解释合理的流程???

wx.switchTab会关闭销毁所有非tabBar页面,但不会关闭tarBar页面,所以此时把隐藏的tabBar(比如此时懵逼的 ”我的“)重新后台加载一次,而程序逻辑中加载“我的”tarBar会触发检查用户是否登录

4.这大要就是这样的解释了吧???

5.解决

把wx.switchTab换成wx.reLaunch,问题解决,但reLaunch会关闭所有的小程序页面,有比较明显的迟钝问题。所以为什么不建议在微信小程序的TarBar上检查统一登录后跳转页面?

而我也因为这被微信拒绝了一次:

1: 你好,小程序登录功能暂未符合规范要求,在登录环节,应当为用户提供可取消或拒绝的选项按钮,不强制用户进行登录。请整改后再重新提交审核,具体登录规范及整改可参考:
https://developers.weixin.qq.com/community/operate/doc/000640bb8441b82900e89f48351401
原文地址:https://www.cnblogs.com/tangyan/p/12490255.html