uni-app实现搜索历史记录和去重、缓存
时间: 2023-11-27 22:53:14 浏览: 237
要实现搜索历史记录和去重、缓存,可以使用uni-app提供的本地存储功能。
首先,需要定义一个对象用来保存搜索历史记录,例如:
```javascript
const history = {
list: [], // 保存搜索历史的数组
maxLen: 10, // 最大历史记录数
add(keyword) { // 添加历史记录的方法
const index = this.list.indexOf(keyword)
if (index !== -1) {
this.list.splice(index, 1) // 如果已存在该记录则先删除
}
this.list.unshift(keyword) // 添加到数组头部
if (this.list.length > this.maxLen) {
this.list.pop() // 如果超过最大长度则删除末尾记录
}
},
clear() { // 清空历史记录的方法
this.list = []
}
}
```
然后,可以在搜索框的输入事件中调用 add 方法,将搜索关键字添加到历史记录中。同时,在页面加载时可以从本地存储中读取历史记录,例如:
```javascript
onLoad() {
const historyList = uni.getStorageSync('history') || [] // 从本地存储中读取历史记录
history.list = historyList // 覆盖 history 对象的 list 属性
}
```
为了防止用户重复添加同一条历史记录,可以在 add 方法中先通过 indexOf 方法判断该记录是否已存在,如果存在则先删除原有记录。
```javascript
add(keyword) { // 添加历史记录的方法
const index = this.list.indexOf(keyword)
if (index !== -1) {
this.list.splice(index, 1) // 如果已存在该记录则先删除
}
this.list.unshift(keyword) // 添加到数组头部
if (this.list.length > this.maxLen) {
this.list.pop() // 如果超过最大长度则删除末尾记录
}
}
```
最后,为了实现历史记录的缓存功能,可以在 add 和 clear 方法中调用 uni.setStorageSync 方法将历史记录保存到本地存储中,例如:
```javascript
add(keyword) { // 添加历史记录的方法
// ...
uni.setStorageSync('history', this.list) // 将历史记录保存到本地存储中
},
clear() { // 清空历史记录的方法
this.list = []
uni.setStorageSync('history', this.list) // 将清空后的历史记录保存到本地存储中
}
```
这样就可以实现搜索历史记录和去重、缓存的功能了。
阅读全文