小程式項目別的頁面初始化拿到的值為兩種狀態(已解決)

来源:https://www.cnblogs.com/web1/archive/2018/04/21/8901689.html
-Advertisement-
Play Games

小程式項目別的頁面初始化拿到的值為兩種狀態,其他頁面拿不到app.js全局globalData下全局的cookie ...


小程式項目別的頁面初始化拿到的值為兩種狀態,其他頁面拿不到app.js全局globalData下全局的cookie

app.js文件

onLaunch: function () {
    console.log('app-onLaunch')
    this.getUserInfo();
   
  },
  onShow:function(){
    console.log('app-onShow')
  },
  // 獲取用戶信息,登錄

  getUserInfo: function (callBack) {
    let that = this;
    if (this.globalData.userInfo) {
      typeof cb == 'function' && cb(this.globalData.userInfo)
    } else {
      wx.login({
        success: function (res1) {
          console.log('res11111111111111111',res1);
          if (res1.code) {
            //授權
            wx.getUserInfo({
              success: res => {
                // 可以將 res 發送給後臺解碼出 unionId
                //console.log('ryy-getUserInfo', res.userInfo)
                that.globalData.userInfo = res.userInfo

                wx.request({
                  url: that.config.HOST + '/user/userLogin.do',
                  data: {
                    code: res1.code, //返回openid
                    headimgurl: res.userInfo.avatarUrl,
                    nickname: res.userInfo.nickName,
                    city: res.userInfo.city,
                    appid: that.globalData.AppId,
                    province: res.userInfo.province,
                    shop_id: '10001',
                  },
                  header: {
                    'content-type': 'application/json'
                  },
                  success: function (res) {
                    console.log('tets1', res)
                    if (res && res.statusCode == 200) {
                      wx.setStorageSync('session_id', res.data.data.session_id)
                      that.globalData.header.Cookie = 'JSESSIONID=' + res.data.data.session_id;
                      that.globalData.is_vip = res.data.data.is_vip;
                      console.log('that.globalData-------------------++++++++++++++++++++', that.globalData)
                      //console.log('that.globalData.header', that.globalData.header.Cookie)
                      //console.log('ryy-qest' + JSON.stringify(res.data), res.data.data)
                      //有些操作需要登陸之後才能獲取,但又是和login驗證同時進行的話就需要加入到回調函數
                      if (callBack) {
                        callBack()
                      }
                    
                    }

                  }
                })
              },

 

全局

globalData: {
    userInfo: null,
    openid:null,
    user_id:null,
    code:null,
    header:{Cookie:null},
    session_id:null,
    img_domain:null,
    telephone:null,
    is_vip:null,
    getInit:{},
  },

其他page文件下的index.js頁面

 

放在onload或者是其他生命周期內列印不出來cookie,一個是空值,一個是有值的
旁邊出來一個感嘆號提示:Value below was evaluated just now
但如果列印,console.log(app.globalData.header.Cookie)出來的是null 但是在自定義方法裡邊比如點擊獲取驗證碼里就能夠獲取到cookie的值

 

————————————————————問題已解決—————2018/4/21/15:10—————————————————————

onLaunch,去掉

this.getUserInfo()的方法 在所需要的頁面進行引入,app.getUserInfo(自定義的方法)

 

要瞭解小程式的生命周期,onLaunch只執行一次,反覆執行的話會出現問題。如果需要進行其他操作可以放在callback裡邊,這裡又涉及到了小程式比較噁心的非同步了。可以去瞭解一下小程式生命周期,以及es6的promise

貼下解決代碼:

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 建議儘量都使用 ,原因如下: 一致性:使用==對一致性沒有任何好處,那麼為什麼不避免使用呢。 簡單和性能:一般來說, 是最簡單的操作符,因為它不用進行類型轉換。JavaScript引擎的性能參差不齊,但是在大部分瀏覽器中 比==速度更快。 即使會自動轉換,但並不總是按你需要的方式轉換:比如7+“3” ...
  • ``` /* * 需求:給圖片的src地址前面增加為assets * * 1. 將需要匹配的內容原封不動的寫入正則表達式 * 2. 將改變的內容替換為.*? * 3. 將.*?添加(),目的是為了能夠將src中的內容單獨匹配一次作為匹配結果 * 4.通過replace將內容替換 * content.... ...
  • undefined和null與任何有意義的值比較返回的都是false,但是null與undefined之間互相比較返回的是true。 console.log(null == false); //false console.log(null == true); //false console.log( ...
  • 在做這個功能時,圖片被擋住了。。 解決辦法 在這個圖片的css裡加上z-index:數字;(數字可以為正也可以為負數) z-index:1肯定在z-index:-1的上面 用這個屬性來給div分層 是個不錯的選擇 ...
  • 運用摺疊面板後 可以讓頁面更加整潔 有什麼不懂的可以留言 代碼放到底部 需要引入的文件 JQuery代碼: html代碼 <div class="layui-colla-item"> <div class="layui-colla-title" style="background-color: #e ...
  • 以往 HTML 的 input 輸入框,無法即時(實時)反映使用者(用戶)的輸入內容。現在 HTML5 新增的 input 事件,可達成此一需求。 ...
  • input輸入框<div id="top-title" style="position: relative"> <img class="img-responsive center-block" alt="" src="" style="float:left;z-index: 999;position ...
  • 上周的某一天,和一位同樣是前端技術極度愛好的開發者朋友聊天,他在提出了一個問題,他寫的vue程式為什麼在dev模式運行良好,而在production模式就直接報錯了。這讓我感到驚訝,還有這麼神奇的事情。今就把這個歷險記道給大伙聽聽,看能從中學習到什麼? 一、還原現場 朋友在看到我的驚訝後,分分就把他 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...