當小程序進入后台一定時間或系統占用資源過高后會被銷毀,所謂的后台,就是用戶點擊小程序左上角的關閉或按HOME鍵離開微信。一直到小程序被銷毀后,globalData就會被清空,也就是下次打開時會被初始化。
一、緩存(StorageSync)本地存儲
1、小程序中的本地存儲有同步功能,可用於保存用戶信息(用戶登錄后的一些基本信息)
2、緩存的更新需要使用setStorageSync方法。
二、全局變量(globalData)
1、保存一些可能涉及安全類的數據,例如資源類,每次需要很准確的,就建議用全局變量。
2、全局變量每次關閉小程序重新打開的時候,都會進行初始化更新。
3丶點擊編譯器的編譯,也會被清空,初始化
三、globalData的用法:
app.js中
-
/**
-
* 全局屬性
-
*/
-
globalData: {
-
addressList: [],//用戶地址
-
}
index.js中對全局變量的取用和保存操作:
-
//獲取應用實例
-
const app = getApp()
-
Page({
-
-
/**
-
* 頁面的初始數據
-
*/
-
data: {
-
areaList:[],
-
},
-
/**
-
* 生命周期函數--監聽頁面加載
-
*/
-
onLoad: function(options) {
-
//取用全局變量
-
if (app.globalData.addressList.length>0) {
-
this.setData({
-
areaList: app.globalData.addressList
-
})
-
}
-
},
-
addressForm: function(res) {
-
var address = {
-
"name": "張三",
-
"phone": "13800138000",
-
"province": "廣東省",
-
"city": "深圳市",
-
"county": "龍華區",
-
"detailInfo": "觀瀾鎮章閣村",
-
};
-
//保存到全局變量里的addressList中
-
let list = app.globalData.addressList;
-
list.push(address);
-
},
-
});
四、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
})
}
