评论

妙用数据缓存接口存储JSON数据

利用小程序的缓存接口存储我们自定义的JSON数据。

在微信小程序API中,有一个setStorageSync接口,该接口可以将数据存储在本地缓存中指定的key中。如果你重新调用该接口,将会覆盖原来该key对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个key允许存储的最大数据长度为1MB,所有数据存储上限为10MB。

根据文档中的描述,我们可以在小程序中存储我们的业务数据。根据文档,我们可知,value值支持原生类型、Date、以及能够通过JSON.stringify序列化的对象。注意的事项,storage应只用来进行数据的持久化存储,不应用于运行时的数据传递或全局状态管理。启动过程中过多的同步读写存储,会显著影响启动耗时。

我们有一个业务需求,自定义大转盘的内容,大转盘有9个格子,其中中间的格子是功能格子,可以启动转盘,剩下的8个格子可以显示数字、文字。我们需要自定义这8个格子上的内容,来满足用户的自定义需求。如下图:

经过分析,我们应该可以将需求分解如下:

1,需定义一个对象来存储格子内容、格子颜色、及格子旋转时颜色。

2,这些内容应该可以单独存储,即用户相互隔离,互不影响。

3,在小程序启动时,可以加载这些数据,并应用到图形进行显示。

实现上面的需求,我们就要用到上面提到的storage接口。它很好的满足了我们的需求。我们将定义的对象序列化为JSON数据,然后使用setStorage接口将JSON数据存储到缓存中。当小程序启动时,从缓存中加载我们的JSON数据,再反序列化为对象,应用到我们的图形显示中。

在九宫格界面中,我们添加了一个设置按钮,这个按钮是自定义设置入口,当用户想要自定义配置九宫格内容时,点击按钮,将打开配置页面,配置页面中包含方块的颜色、文字内容表单,界面如下:

填写好参数时,保存配置,系统会将我们填写的表单内容转换成JSON数据,然后调用缓存接口保存到用户的缓存,当小程序下次启动时,将会调用新的配置。

缓存的具体用法如下:

1,将配置存储到缓存中

 let boxConfig = {
      isCustomfalse,
      blockBgColor'#F5F5F5',
      blockLabelColor'#808080',
      blockLabels'1号|2号|3号|4号|5号|6号|7号|源码',
      startBtnBgColor'#FFD700',
      startBtnLabelColor'#808080',
      turnBgColor'#FFA500',
    };
 let jsonBoxConfig = JSON.stringify(boxConfig);
    wx.setStorageSync("boxConfig", jsonBoxConfig);
    that.setData({
      tips'请重新打开小程序,查看九宫格大转盘效果',
    })


2,从缓存中加载配置

 const boxConfigJson = wx.getStorageSync("boxConfig");
    if(!isEmpty(boxConfigJson)){
      const boxConfig = JSON.parse(boxConfigJson);
      const boxLabels = boxConfig.blockLabels;
      const boxLabelArr = str2arr2(boxLabels);
      this.setData({
        isCustom:boxConfig.isCustom,
        blockBgColor:boxConfig.blockBgColor,
        blockLabelColor:boxConfig.blockLabelColor,
        blockLabels:boxLabelArr,
        startBtnBgColor:boxConfig.startBtnBgColor,
        startBtnLabelColor:boxConfig.startBtnLabelColor,
        turnBgColor:boxConfig.turnBgColor,
      })
    }	

如果你有疑问或者建议,欢迎你评论!


最后一次编辑于  03-03  
点赞 0
收藏
评论
登录 后发表内容