小程序的數組緩存可以用來做購物車,瀏覽記錄等
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,
})
},