小程序:全局数据的存储与共享

作者:沙与沫2023.12.11 11:09浏览量:246

简介:微信小程序设置globalData全局数据

微信小程序设置globalData全局数据
随着微信小程序的普及,越来越多的开发者开始关注如何在使用微信小程序的过程中,更好地管理和维护全局数据。微信小程序提供了globalData全局数据设置,使得开发者可以在小程序的所有页面中共享和访问这些数据。
一、什么是globalData全局数据?
在微信小程序中,globalData是一个全局的JavaScript对象,可以在小程序的所有页面中共享和访问。它主要用于存储小程序的全局状态,如用户信息、应用状态等。通过设置globalData的值,开发者可以在不同的页面之间共享数据,避免了在不同页面之间传递数据的麻烦。
二、如何设置globalData全局数据?

  1. 在app.js中定义globalData
    首先,你需要在app.js文件中定义一个空的globalData对象。
    1. App({
    2. onLaunch: function () {
    3. // 展示本地存储能力
    4. var logs = wx.getStorageSync('logs') || []
    5. logs.unshift(Date.now())
    6. wx.setStorageSync('logs', logs)
    7. // 登录
    8. wx.login({
    9. success: res => {
    10. // 发送 res.code 到后台换取 openId, sessionKey, unionId
    11. }
    12. })
    13. },
    14. globalData: {
    15. userInfo: null,
    16. posts: []
    17. }
    18. })
  2. 在页面中访问并修改globalData
    在app.js中定义的globalData可以在小程序的所有页面中使用。你可以通过wx.getApp()获取全局的app实例,进而访问globalData。
    在小程序的页面中,你可以使用以下代码获取并修改globalData:
    1. //获取全局数据
    2. var app = getApp();
    3. var globalData = app.globalData;
    4. //修改全局数据
    5. globalData.userInfo = {name: 'newName', age: 30};
    三、注意事项
    在使用globalData时,你需要注意以下几点:
  3. globalData中的数据是缓存在本地中的,如果你想在另一个会话(如在另一个微信号中)访问这些数据,你需要将数据存入到服务器并从服务器获取。
  4. 在页面的onLoad方法中不能使用全局的this来访问globalData,因为页面的onLoad是在组件的上下文中运行的,而不是在app的上下文中。你应该使用getApp()来获取app实例。
  5. 由于不同页面可能会同时更改globalData,所以微信小程序对全局数据的更新采用了乐观锁机制,当一个页面读取了globalData后,另一个页面就不能直接修改它,而是需要先获取当前的globalData,修改后再提交更新。如果另一个页面修改失败(如因网络问题),那么当前页面的globalData将被保留下来。