商城系統(tǒng) 注冊

微信小程序-bug- 調(diào)用wx.login()無響應(yīng)的原因和解決方案

2020-09-27|HiShop
導(dǎo)讀:很多微信小程序開發(fā)者,都會(huì)遇到這樣的情況,在調(diào)用wx.login()的時(shí)候,在部分IOS上無響應(yīng)的情況,那么這種情況要如何解決?...

很多微信小程序開發(fā)者,都會(huì)遇到這樣的情況,在調(diào)用wx.login()的時(shí)候,在部分IOS上無響應(yīng)的情況,那么這種情況要如何解決?

微信小程序-bug- 調(diào)用wx.login()無響應(yīng)的原因和解決方案

響應(yīng)結(jié)果如下: 
分析結(jié)果,我們知道,login接口一直處于pending狀態(tài),如果加了timeout時(shí)間后,在complate回調(diào)中可觸發(fā); 
那為什么login方法一直是pending呢????

發(fā)現(xiàn)頁面中其實(shí)用了新組件


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

這個(gè)組件是用來顯示微信的“頭像”和“昵稱”的,本著“試一試,萬一可以呢”的原則,果斷刪除了該組件,再次運(yùn)行,好了,神奇了嗨!

在調(diào)用wx.login()方法前,我先使用open-data標(biāo)簽渲染了“頭像”和“昵稱”,但是為啥先使用組件后就GG了?可能是微信渲染自帶線程的吧,我的使用方法,違背了微信的渲染機(jī)制,導(dǎo)致了線程阻塞(我猜的哈);

回頭想想,也是哈,尚未登陸就渲染了頭像和昵稱,節(jié)奏不是這樣的;就像警察查身份證,還沒刷機(jī)器,就知道你叫啥了,住哪里,不科學(xué)了對吧。

所以,要顯示頭像和昵稱的open-type組件,必須在調(diào)用wx.login()的API后,再行渲染;  知道了原因,解決起來就很簡單了,定義一個(gè)變量isLogin,用來記錄wx.login()是否已調(diào)用  let isLogin = false wx.login({ success: function(res) { if (res.code) { //發(fā)起網(wǎng)絡(luò)請求 isLogin = true; } } });

然后將isLogin綁定在頁面的data對象中,我就不寫了哈,然后在頁面中,用wx:if判斷就可以了


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

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。更多小程序商店請查看:小程序商店

微信小程序-bug- 調(diào)用wx.login()無響應(yīng)的原因和解決方案

電話咨詢 預(yù)約演示 0元開店