小程序的数组缓存可以用来做购物车,浏览记录等
wx.setStorage() 和 wx.setStorageSync() 的区别
- setStorage() 为异步存储,不管你缓存成功与否,都会执行下一步
- setStorageSync() 为同步存储,在缓存成功之后才会执行下一步
添加数组缓存
onLoad: function () {
// 先获取缓存中的内容
let array = wx.getStorageSync('item') || []
// 向数组中追加
array.push({
item: 'item',
item1: 'item1',
})
// 重新设置缓存
wx.setStorage({
key: 'item',
data: array,
success: function (res) {}
})
},
执行一次就添加一次缓存,结果如下:
完全清除直接使用 wx.removeStorage('key')
或 wx.removeStorageSync('key')
那如何删除数组缓存中的某一项呢
!!!严重警示
,不要使用网上说的那个 splice,因为你会发现删除到最后一项的时候没法删完。splice 文档说明:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
//这里是我的索引设置,每点击一个,删除对应索引的缓存数组
<button bindtap="clearCache" wx:for="{{4}}" data-id="{{index}}" wx:key="index">点击</button>
clearCache(e) {
// 获取索引值
let index = e.currentTarget.dataset.id
// 先获取缓存中的内容
let array = wx.getStorageSync('item')
// 设置一个新的数组 arrays,注意这里带有 s
let arrays = []
for (var i = 0; i< array.length; i++) {
if (i != index) {
arrays.push(array[i])
}
}
// 重新设置缓存
wx.setStorage({
key: 'item',
data: arrays,
})
},