微信小程序关于数据存储的一些坑

微信小程序存储方式官方文档说得很清楚,同步和异步。保存数据有以下两种方式:

wx.setStorage 异步保存

 wx.setStorageSync同步保存

获取数据也是两种:

wx.getStorage 异步获取

 wx.getStorageSync同步获取

今天主要说一下我自己在使用中遇到的一点坑,就是在存储成功后跳转下一个页面却取不到值了。还有最后的解决办法。

具体使用情景是这样的,程序一进来有个登录界面,输入账号密码后登录成功,服务器会返回该用户的具体信息,其中就包括我立即需要保存下来,供全局使用的用户token。

具体代码如下:

if(response.data.success){

  //存储token

  wx.setStorageSync("token", response.data.data.token)

  wx.setStorageSync("headPictures", response.data.data.employeeMap.headPictures)

  wx.setStorageSync("employeeName", response.data.data.employeeMap.employeeName)

    wx.switchTab({

      url: '../taskList/taskList',

    })

}

不难发现当访问成功后跳转下一个页面。

在下一个页面Page内代码:

/**

  * 页面的初始数据

  */

  data: {

  token:wx.getStorageSync("token"),

  }

直接给data内token赋值。但是这时候打印this.data.token却是空的,没有取到值。另外我也试了另外一个方法, 直接声明有个变量接收,如:var token = wx.getStorageSync("token")  打印出来也是一样,没有值。

解决办法:其实也不算是办法吧,就是小程序不支持这么干,不支持你这么写。想要得到这个值,直接使用wx.getStorageSync("token")即可。或者不想这么长就使用如下样式赋值:

 this.setData({

token:wx.getStorageSync("token"),

})

就这么简单,但是入坑了。写出来提醒一下大家不要跟我一样,自认为写得没啥毛病,以为微信小程序的API又有啥bug呢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 13,575评论 0 3
  • 转载链接 注:本文转载知乎上的回答 作者:初雪 链接:https://www.zhihu.com/question...
    pengshuangta阅读 28,656评论 9 295
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,200评论 30 471
  • 什么叫做对自己负责? 一个人美不只是在外表更多是在内涵,而这个时代注重的更多的是外表,颜值不只是现在人所谓的外...
    松子同学aaat阅读 349评论 0 0