关于小程序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
})
}

 
正道的光终将来临,当太阳升起的时候,光芒总会普照大地温暖人间。些许的阴霾也终会有被阳光洒满的一天
原文地址:https://www.cnblogs.com/sjruxe/p/13392934.html