小程序模板下载与定制平台
客服QQ客服QQ 客服微信客服微信 公众号公众号

微信小程序调用wx.login()无响应的BUG解决办法

最近有些小程序开发者,在调用wx.login()的时候,在部分IOS上无响应的情况; 

补充一点:在测试模式,调试模式,都是OK的,一上正式环境就GG了,百思不得其解啊!

响应结果如下: 

分析结果,我们知道,login接口一直处于pending状态,如果加了timeout时间后,在complate回调中可触发; 

那为什么login方法一直是pending呢????

看了微信的社区,也提了问题,但是微信官方回应,他们真机测试过,没这个情况发生;见鬼了么 

这就尴尬了,一边一个说辞,然后就继续解决呗!客户等着呢,锅甩给微信,客户也不答应啊!

捋了一遍代码,发现页面中用了新组件

<open-data type="userAvatarUrl"></open-data> <open-data type="userNickName"></open-data>

这个组件是用来显示微信的“头像”和“昵称”的,本着“试一试,万一可以呢”的原则,果断删除了该组件,再次运行,好了,神奇了嗨!

在调用wx.login()方法前,我先使用open-data标签渲染了“头像”和“昵称”,但是为啥先使用组件后就GG了?可能是微信渲染自带线程的吧,我的使用方法,违背了微信的渲染机制,导致了线程阻塞(我猜的哈);

回头想想,也是哈,尚未登陆就渲染了头像和昵称,节奏不是这样的;就像警察查身份证,还没刷机器,就知道你叫啥了,住哪里,不科学了对吧。

所以,要显示头像和昵称的open-type组件,必须在调用wx.login()的API后,再行渲染;  知道了原因,解决起来就很简单了,定义一个变量isLogin,用来记录wx.login()是否已调用  let isLogin = false wx.login({ success: function(res) { if (res.code) { //发起网络请求 isLogin = true; } } });

然后将isLogin绑定在页面的data对象中,我就不写了哈,然后在页面中,用wx:if判断就可以了

<open-data wx:if='{{isLogin}}' type="userAvatarUrl"></open-data> <open-data wx:if='{{isLogin}}' type="userNickName"></open-data>

TAG标签:调用wx login无响应

上一个:微信小程序textarea手机端调试BUG解决方法
下一个:微信小程序开发常见BUG 你遇到了多少

小程序模板

免责声明:本站资源均来自用户分享和网络收集,仅供学习研究,请勿用于商业用途,若损害您的权益,请联系网站客服,核实后立即删除。

咨询客服

QQ:1847629575

全年 09:00-23:00

(其他时间请留言)

在线客服

Copyright©2021 www.why114.com 瓦窑模板 版权所有 鲁ICP备20017802号

展开