搜尋
首頁微信小程式小程式開發微信小程式首頁資料初始化失敗的解決方法

一、 問題描述

用戶首次後再次進入小程式時,我們通常需要透過取得使用者openid或unionid作為唯一標示與後台進行資料交流,初始化使用者資訊。當我們透過第三方伺服器跟微信建立請求時,微信需要使用者確認是否公開資訊。如圖1,從console可以看到,在請求的同時,我們的首頁index已經載入完成,圖中初始化資料顯示為空。無論我們將請求資訊寫在app.js的onload中或index.js中,當我們點擊確認後,請求資訊才執行success方法,將第三方伺服器傳回的資料處理,這樣的因需要使用者點擊而產生的滯後性,我們很難要求程式停下來等我們。那麼,我們可以透過其他途徑,來達到讓程式「停下來」的錯覺,下面容我來介紹一下我的解決方法。

微信小程式首頁資料初始化失敗的解決方法

二、 解決方法的最基本要求

我們想要的解決方法的最基本要求有以下兩點:

1) 當我們進入主頁,數據完成了初始化,並正常顯示) 當使用者首次進入程序,只需確認確認公開信息,即可正常進入主頁

三、 解決方法

我的解決方法是:通過設計一個“臨時加載頁”來達到我們想要的效果,這個臨時加載頁類似於Android的歡迎介面,但當資料加載完成,或者我在第二次進入時,將自動跳到我們的主頁。下面是設計程式碼部分。

步驟一:首先我們在app.json中,建立一個新的page,命名為welcome

"pages/welcome/welcome"

注意該page要放置在首頁,也就是程式進來第一個頁面

步驟二:我們在welcome.js中,將具體請求操作寫入到onload中

// pages/welcome/welcome.js
Page({
 data:{},
 onLoad:function(options){
 // 页面初始化 options为页面跳转所带来的参数
 var that = getApp()
  try {
  //首先检查缓存中是否有我们需要请求的数据,如果没有,我们再跟服务器连接,获取数据
  //首次登陆肯定是没有的
  that.globalData.userInfo = wx.getStorageSync('userInfo')
  if(wx.getStorageSync('userInfo')!=''){
  //如果缓存不为空,即已经存在数据,我们不用再跟服务器交互了,那么直接跳转到首页
  wx.switchTab({
  url: '../index/index',
  })
  }
  if (value) {
  // Do something with return value
  console.log(that.globalData.userInfo)
  }
 } catch(e){
  // Do something when catch error
  //当try中的缓存数据不存在时,将跳到这步,这步中,我们将与服务器进行连接,并获取数据
  if(that.globalData.userInfo == ''){
  wx.login({
   success: function(res) {
   //获取用户code,转发到我们的服务器,再在我们服务器与微信交互,获取openid
    var code = res.code
    wx.getUserInfo({
     success: function(userInfo) {
      var encryptedData = userInfo.encryptedData
      var iv = userInfo.iv
      //我们服务器请求地址
      var url = that.apiHost + 'index/login'
      var userinfo = userInfo.userInfo
      var username = userinfo.nickName
      var useravatar =userinfo.avatarUrl
      var usersex=userinfo.gender
      wx.request({
       url: url,
       method: 'POST',
       data: {
        'code': code,
        'username':username,
        'useravatar':useravatar,
        'usersex':usersex
       },
       header: {
       "Content-Type": "application/x-www-form-urlencoded"
      },
    success:function(response) {
    //数据交互成功后,我们将服务器返回的数据写入全局变量与缓存中
    console.log(response.data)
    //写入全局变量
    that.globalData.userInfo = response.data
    wx.hideToast()
    //写入缓存
    wx.setStorage({
    key: 'userInfo',
    data: that.globalData.userInfo,
    success: function(res){
      console.log("insert success")
     },
    fail: function() {
     // fail
     },
    complete: function() {
     // complete
     }
     })
   //写入后,我们将跳转到主页
   wx.switchTab({
    url: '../index/index',
    })
   },
  failure: function(error) {
    console.log(error)
       },
      })
     }
    })
   }
  })}
 } 
 },
 onReady:function(){
 // 页面渲染完成
 },
 onShow:function(){
 // 页面显示
 },
 onHide:function(){
 // 页面隐藏
 },
 onUnload:function(){
 // 页面关闭
 },
 redirect:function(){
 wx.switchTab({
  url: '../index/index',
 })
 }
})

可看到,我們在首次登陸時,將進入我們的歡迎介面,當用戶確認公開資訊後,頁面將自動跳到首頁,首頁資料正常顯示

微信小程式首頁資料初始化失敗的解決方法

微信小程式首頁資料初始化失敗的解決方法在第二次進入時,跳轉在onload中就進行了,介面還沒渲染就跳轉了,所以速度很快,親測跳轉還算滿意,但終究還是繞個彎來做一件事,大家若有更好的方法,也請分享分享,謝謝!

以上所述是小編給大家介紹的微信小程式首頁資料初始化失敗的解決方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回覆大家的!

更多微信小程式首頁資料初始化失敗的解決方法相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用