记bug 微信小程序wx.setStorage写入后读取不是最新一次错误排查

31 阅读1分钟

前言

小程序碰到奇怪的bug,需求是并排的几个下拉框触发后本地写入存储了同一个数据名name。
每次下拉写入后会进行后续函数处理,会发现读取的永远不是最新的。而且还是哪个下拉触发的就显示为那次写入下拉时的数据。

image.png

开发工具一切正常,真机会出现。
下拉第一次存储名name对应数据a,第二次存储名对应数据为b,相当于把name更新最新为了。预期中后续每次读取name都是后者才是。但实际会再点同一个下拉时显示a,再点后一次下拉位置时显示b。

处理

看到网上有描述wx.setStorage写入的数据,如果直接setData中使用会造成有时bug。但和这次似无关。 最后另类处理了。原因未知,只清楚写入时的数据获取时被干扰了。

   let res = wx.getStorageSync('xx')
   ...
   // 每次写入前重置下再写
   wx.removeStorageSync('xx')
   wx.setStorage({
        key: 'everylist',
        data: [...res, ...temp]
   })