微信小程序 Storage更新详解


Posted in Javascript onJuly 16, 2019

前言

1、近期项目开发中接触到微信小程序,其中有部分业务需要用到数据本地存储,而微信的官方文档中并没用提供直接更新Storage的API。

2、通过wx.setStorage(Object object)可以达到覆盖原有数据达到更新的目的,但是在只修改某个对象中某个属性的值中使用这个API总感觉有点蹩脚。

3、下面笔者简单封装了一个方法用来修改Storage,若是有人知道更好的方法或者我的写法有问题还望不吝赐教。

问题描述

小程序首次登录时需要输入账号密码,首次登录成功后将账号与token保存本地。下次启动小程序验证token是否过期,未过期直接登录,若过期则重新获取token并修改之前保存本地token

常规写法

原有Storage

微信小程序 Storage更新详解

1、根据key"loginSetting"取出所有登录信息

2、获取新的token构建新的“loginSetting”

3、调用setStorage(Object object)保存

封装更新API

/**
 * 更新本地缓存数据
 * key: 本地缓存中指定的 key
 * newData: 需要更新的内容
 * 
 */
const updateStorageInfo = param => {
  var key = param.key
  var newData = param.newData

  var tempData = {}

  wx.getStorage({
    key: key,
    success(res) {

      var storage = res.data
      for (var prop in storage) {

        for (var pr in newData) {
          if (prop == pr) {
            storage[prop] = newData[pr]
          }
        }
      }

      tempData = storage
      wx.setStorage({
        key: key,
        data: tempData,
        success(res) {
          param.success(res)
        },
        fail(res) {
          param.fail(res)
        }
      })
    },
    fail(res) {
      param.fail(res)
    },
    complete(res) {
      param.complete(res)
    }
  })


}

使用updateStorageInfo API

var data = {
    token: that.randomWord(false, 32)
  }
  util.updateStorageInfo({
    key: "loginSetting",
    newData: data,
    success(res) {
      console.log(res)
    },
    fail(res) {
      console.log(res)
    },
    complete(res) {
      console.log(res)
    }
  })

使用详解

1、原有loginSetting对象中有account,token属性,如果只需更改token属性。则只需构建需要更改内容的json对象,与更改的key。需要更改哪些数据则构建相应json即可。

2、如果更改了一个不存在的key则会进入fail callback

实现原理

1、实现思路还是需要根据key将整个对象取出,构建新对象再保存一次。之前相当于你要修改一个对象中的一个值,需要提供这个对象的标识,然后根据这个标识在本地存储中找到这个对象,接着把你需要改变的值与前面找到的数据进行合并,再保存。

2、根据key去本地查找对象与就对象和新对象匹配的逻辑类似,这也正是我们可以偷懒的地方。

源码下载

源码地址:https://github.com/SingletonH/Storage.git

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
手把手教你自己写一个js表单验证框架的方法
Sep 14 Javascript
js加强的经典分页实例
Mar 15 Javascript
Javascript this 关键字 详解
Oct 22 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
Mar 25 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 #Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 #jQuery
JS实现的排列组合算法示例
Jul 16 #Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
Jul 16 #Javascript
详解微信小程序支付流程与梳理
Jul 16 #Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 #Javascript
JAVA面试题 static关键字详解
Jul 16 #Javascript
You might like
PHP的面试题集
2006/11/19 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
JS数组属性去重并校验重复数据
2020/01/10 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
python自动化办公操作PPT的实现
2021/02/05 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
小溪流的歌教学反思
2014/02/13 职场文书
社区食品安全实施方案
2014/03/28 职场文书
购房协议书范本
2014/04/11 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
搞笑老公保证书
2015/02/26 职场文书
村官个人总结范文
2015/03/03 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书