zoukankan      html  css  js  c++  java
  • 关于小程序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
    })
    }

     
    正道的光终将来临,当太阳升起的时候,光芒总会普照大地温暖人间。些许的阴霾也终会有被阳光洒满的一天
  • 相关阅读:
    第八次作业
    设计一款给爸爸妈妈用的手机
    第五次作业
    第四次作业(项目分析)
    第二次作业(个人项目实践)
    即时通讯软件的发展演变
    C++用法的学习心得
    JavaScript(变量、作用域和内存问题)
    一、Java和JavaScript
    使用Hyper-V创建虚拟机
  • 原文地址:https://www.cnblogs.com/sjruxe/p/13392934.html
Copyright © 2011-2022 走看看