vue搜索历史记录缓存实现
思路:
1.浏览器缓存永久保存搜索历史数据.
2.页面初始化将数据保存到页面变量中.
3.对搜索历史记录的怎加和删除,要同步到缓存中.
----------------直接看代码----------------
*前端使用的是vue,这里只是代码片段*
1.页面的 div
<!---历史搜索begin---->
<div style="margin-top: 46px">
<div v-if="this.showFlag === true" class="search-history">
<div class="tip-words">
<div style="float: left;">
<h4>搜索历史</h4>
</div>
<div style="float: right;" @click="clearHistoryItems">
<img src="../../img/img/delete-1.png" width="16px"/>
</div>
</div>
<p style="margin-bottom: 10px"> </p>
<div v-for="(item,index) in searchHistoryList" :key="index" @click="searchByHistoryKeyWord(item)" class="history-keywords">
{{item}}
</div>
</div>
</div>
<!---历史搜索end---->
2. vue data
data() {
return {
// 搜索历史
searchHistoryList: [],
// 标记显示搜索历史
showFlag: false,
loadShow: false
}
},
3.vue 搜索历史的一些方法
methods: {
showHistory() {
if (this.searchHistoryList.length > 0) {
this.showFlag = true
}
},
// 清空历史记录
clearHistoryItems() {
localStorage.removeItem('historyItems')
this.searchHistoryList = []
this.showFlag = false
},
// 过滤一个结果的空记录添加,过滤空搜索
appendKeywords(value) {
/**
* 1.已经有的关键词不再添加
* 2.添加到数组的首位,若超出10个则删除最后一个
* 3.添加到缓存
*/
var appendFlag = true
if (this.searchHistoryList !== null && this.searchHistoryList !== undefined && this.searchHistoryList.length > 0) {
this.searchHistoryList.forEach(function(currentValue, index) {
if (currentValue === value) {
appendFlag = false
return
}
})
// 判断-添加
if (appendFlag === true) {
// 长度判断
if (this.searchHistoryList.length >= 10) {
this.searchHistoryList.unshift(value)
this.searchHistoryList.pop()
} else {
this.searchHistoryList.unshift(value)
}
localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList))
}
} else {
this.searchHistoryList = []
this.searchHistoryList.push(value)
localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList))
}
},
searchByHistoryKeyWord(item) {
this.loadTip = ''
this.queryData.inputInfo = item
// 查询
fetchGetDataByKeyWord(item).then(response => {
// 查询赋值
this.dataList = response.data.body.data
if (this.dataList.length === 0) {
this.loadTip = '没有符合条件数据'
this.showHistory()
} else {
this.loadTip = ''
this.showFlag = false
}
})
}
}
vue搜索历史记录缓存实现的更多相关文章
- Day12-微信小程序实战-交友小程序-优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)
回顾/:我们已经实现了显示附近的人的功能了,可以多个人看到附近的人页面了 但是还是要进行优化有几个问题:1.我们用户选择了其他的自定义头像之后,在首页可以看到头像的变化,但是在附近的人中头像会变成报错 ...
- js实现前端的搜索历史记录
最近在对接前台页面(WEB端)时,产品要求需记录下客户的搜索记录,我们是前后台完全分离的项目,根本不能保存的session域中,没办法,虽然作为后台开发,遇到需求就自己研究了一通,先看一下最终效果图, ...
- 示例vue 的keep-alive缓存功能的实现
本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. Vue 实现组件信息的缓存 当我们 ...
- Vue计算属性缓存(computed) vs 方法
Vue计算属性缓存(computed) vs 方法 实例 <div id="example"> <p>Original message: "{{ ...
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- Android用AutoCompleteTextView实现搜索历史记录提示
简介 在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非常方便.这种效果在 Android中是用AutoCompleteTextView实现的 ...
- vue页面是否缓存的两种方式
第一种 <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> ...
- layui 数据表格+分页+搜索+checkbox+缓存选中项数据
在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索, 还有checkbox, 支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...
- vue中如何缓存一些页面
在vue中,有时候我们只想缓存页面中的一些组件或页面,这个时候怎么办呢,我们就需要用判断来加载keep-alive. 例如: // router.js { path: "/driving_l ...
- vue的组件缓存(返回页面不刷新)
每次使用返回是页面总是会刷新 导致了一些体验上的不愉快 现在 发现vue中的一个很方便的方法还可以用来优化性能就是: keep-alive缓存组件 <router-view v-if=" ...
随机推荐
- VSCode配置git
1.背景 vscode中基础git; 前提:本地已经安装好了git 有这样的菜单,并且可以正常上传下载代码 2.步骤 步骤一:找的git的安装路径: D:\Program Files\Git 步骤二: ...
- MD5签名生成,字典排序,实际生产
1.背景 作用:防止请求参数篡改,限制请求时效性: 常用方式:md5签名 关键:签名Key 常用签名原串排列:字母顺序.key1=value1&key2=value2....key (注意:签 ...
- MySQL 5.7 DDL 与 GH-OST 对比分析
作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率.空间占用.锁阻塞.binlog日志产生量.主备延时等方面 ...
- 使用BizyAir,没有显卡,也能玩AI绘图
或许很多人跟我一样,没有显卡,但又很想玩AI绘图,但本地绘图怕是无缘了,只能借助云GPU的方式了. 今天跟大家分享一下一个简单目前可白嫖无门槛的方法实现无显卡也能玩AI绘图. 方案就是ComfyUI+ ...
- 6. 从0开始学ARM-异常及中断处理、异常向量表、swi
一.异常(Exception) 异常是理解CPU运转最重要的一个知识点,几乎每种处理器都支持特定异常处理,中断是异常中的一种. 有时候我们衡量一个操作系统的时候实时性就是看os最短响应中断时间以及单位 ...
- 使用 reloadNuxtApp 强制刷新 Nuxt 应用
title: 使用 reloadNuxtApp 强制刷新 Nuxt 应用 date: 2024/8/22 updated: 2024/8/22 author: cmdragon excerpt: re ...
- redux开发中的一个小坑
redux的actiontypes,不可以重名,重名将会报错 When called with an action of type "inserttoken", the slice ...
- Python wheel
在 Python 的生态系统中,wheel 是一种打包格式,用于分发和安装 Python 项目.它是 Python 包的标准格式之一,旨在提高安装速度和可靠性. Wheel 的优势 快速安装:因为 w ...
- 【Homebrew】之相关命令问题合集及iOS真机调试包
一.Homebrew更换国内镜像源(中科大.阿里.清华) Homebrew主要有四个部分组成: brew.homebrew-core .homebrew-bottles.homebrew-cask. ...
- Python新手爬虫二:爬取搜狗图片(动态)
经过上一期爬取豆瓣影评成功后,感觉爬虫还不错,于是想爬点图片来玩玩... 搜狗图片地址:https://pic.sogou.com/?from=category 先上最后成功的源码(在D盘下创建sou ...