当前位置:微信小程序开发 > 小程序资讯 > 小程序开发教程 > 微信小程序调用wx.login()无响应的解决方案

微信小程序调用wx.login()无响应的解决方案

2018-08-07 17:08 来源: 霸界科技

摘要:很多微信小程序开发者,都会遇到这样的情况,在调用wx.login()的时候,在部分IOS上无响应的情况,那么这种情况要如何解决?...

期权保本理财
  很多微信小程序开发者,都会遇到这样的情况,在调用wx.login()的时候,在部分IOS上无响应的情况,那么这种情况要如何解决?
 
微信小程序调用wx.login()无响应的解决方案
 
  响应结果如下:
 
  分析结果,我们知道,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>
分享到:
最新评论

网友:

验证码: 点击我更换图片

联系我们

业务咨询:15918761088

招商咨询:15918761088(微信同号)

周一至周五 9:30-18:30

公司地址:广州市海珠区昌岗中路166号富盈国际大厦2505室

官方微信 官方微博

Copyright © 2018 www.keji168.com 广州霸界网络科技有限公司版权所有 粤ICP备18083764号-1

客服
套餐咨询,合作细节等
在线客服
电话咨询
159-1876-1088