關於小程序globalData


當小程序進入后台一定時間或系統占用資源過高后會被銷毀,所謂的后台,就是用戶點擊小程序左上角的關閉或按HOME鍵離開微信。一直到小程序被銷毀后,globalData就會被清空,也就是下次打開時會被初始化。

一、緩存(StorageSync)本地存儲

1、小程序中的本地存儲有同步功能,可用於保存用戶信息(用戶登錄后的一些基本信息)

2、緩存的更新需要使用setStorageSync方法。

二、全局變量(globalData)

1、保存一些可能涉及安全類的數據,例如資源類,每次需要很准確的,就建議用全局變量。

2、全局變量每次關閉小程序重新打開的時候,都會進行初始化更新。

3丶點擊編譯器的編譯,也會被清空,初始化

三、globalData的用法:

app.js中

  1.  
    /**
  2.  
    * 全局屬性
  3.  
    */
  4.  
    globalData: {
  5.  
    addressList: [],//用戶地址
  6.  
    }

index.js中對全局變量的取用和保存操作:

  1.  
    //獲取應用實例
  2.  
    const app = getApp()
  3.  
    Page({
  4.  
     
  5.  
    /**
  6.  
    * 頁面的初始數據
  7.  
    */
  8.  
    data: {
  9.  
    areaList:[],
  10.  
    },
  11.  
    /**
  12.  
    * 生命周期函數--監聽頁面加載
  13.  
    */
  14.  
    onLoad: function(options) {
  15.  
    //取用全局變量
  16.  
    if (app.globalData.addressList.length>0) {
  17.  
    this.setData({
  18.  
    areaList: app.globalData.addressList
  19.  
    })
  20.  
    }
  21.  
    },
  22.  
    addressForm: function(res) {
  23.  
    var address = {
  24.  
    "name": "張三",
  25.  
    "phone": "13800138000",
  26.  
    "province": "廣東省",
  27.  
    "city": "深圳市",
  28.  
    "county": "龍華區",
  29.  
    "detailInfo": "觀瀾鎮章閣村",
  30.  
    };
  31.  
    //保存到全局變量里的addressList中
  32.  
    let list = app.globalData.addressList;
  33.  
    list.push(address);
  34.  
    },
  35.  
    });

 四、StorageSync的用法:

1、存入緩存

 var addressList= wx.setStorageSync(key,value);

2、取出緩存

var addressList= wx.getStorageSync(key);

3、清除緩存

wx.removeStorageSync(key);

4、清除所有緩存 

wx.clearStorageSync() ;

什么是globalData

微信小程序app.js中的globalData存儲的是全局數據,如果希望在各個頁面之間共同使用某些信息,並且可以對共享數據進行修改設置,以便於其他頁面根據數據變化進行對應的調整,最好使用globalData。

使用globalData

根據自己的需要設置任何數據。在app.js中讀取globalData,使用this就可以了,修改globalData,需要對其賦值就可以。

//app.js
App({
    globalData: {
        userInfo:[
	        {name:'jack'},
	        { age: 18}
        ],
        a:19
    },
     onLoad: function(){
        console.log(this.globalData.a);
        this.globalData.a = '123'
    }
})

 

//app.js
App({
globalData: {
userInfo:[
{name:'jack'},
{ age: 18}
],
a:19
},
onLoad: function(){
console.log(this.globalData.a);
this.globalData.a = '123'
}
})

在其他頁面讀取以及修改globalData。不論是讀取還是修改,首先需要在應用的頁面js文件中,引用app()實例。

//index.js
var app = getApp(); //這句是引入
Page({
    onLoad: function() {
        console.log(app.globalData.a);
         getApp().globalData.a = "王二麻子";
    }
})
PS:這段時間,在開發微信小程序的過程中,出現了在app.js文件中,用this.globalData.ciku不能獲取globaldata中的ciku(數組,有三百多條數據)的值,最后解決的辦法是刪除了數組中的一些元素。記錄以下,以防下次遇到同樣的問題。

小程序獲取StorageSync時候的坑

獲取StorageSync的值的時候,會發現值不同,必須調用getParam,這個方法有個返回值,return才能把真的值獲取到
使用getParams方法

data: {
token: ''
},
getParams: function (a) {
return wx.getStorageSync(a)
},
onShow: function () {
var token = this.getParams('token');
console.log(token);
this.setData({
token : token
})
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM