公众号是H5开发的,直接使用localStorage.setItem,将返回结果塞进去,存储进去,全局使用localStorage.getItem去获取,但是去获取的时候报错,看了下控制台,我靠,怎么存进去了[object,object],这是什么鬼?抱着疑惑百度了一手,得出如下结论:
localStorage.setItem
当你尝试使用 localStorage.setItem 存储一个对象或数组时,如果直接存储,它们会被隐式地转换为字符串,但这通常不是你想要的结果。例如,如果你直接存储一个对象,那么存储的内容将会是 [object Object] 这样的字符串,而不是对象的具体内容。
因此,在将对象或数组存储到 localStorage 之前,你需要使用 JSON.stringify 方法将它们转换为字符串。这样,你就可以将字符串形式的对象或数组存储到 localStorage 中了。当你需要读取这些值时,你可以使用 JSON.parse 方法将字符串转换回对象或数组
果然,在将返回的对象通过JSON.stringify包裹后存储进去成功了!
小程序和App开发,之前没注意到,直接将公众号的这一手就复制过去了,结果返工重写。全局搜索了一手,what's up!除了刚刚改的localStorage,其他地方都没用到过,后面注意到这是用的uniapp框架搭建的,在小程序和app环境下也不支持使用localStorage,无奈换了uni.setStorageSync,替换完后,使用也没问题,直接提交。结果又被退回来,说uni.setStorageSync和localStorage的使用还是有点区别的,别直接换着用,一脸懵逼的我一脸懵逼,赶紧回去接着百度,如下:
uni.setStorageSync
uni.setStorageSync 是用于微信小程序的同步本地存储接口,它用于将数据存储在本地的缓存中。通常,这个接口可以直接存储 JavaScript 的基本类型如字符串、数字、布尔值等,以及可以被序列化的对象。
如果你尝试存储的 value 是一个对象,那么在调用 uni.setStorageSync 之前,你不需要手动将对象转换为字符串。因为这个过程会自动进行。但如果你需要将对象转为字符串,通常是为了存储更复杂的数据结构或者需要自定义序列化过程时。