uniapp 前端获取历史搜索记录

场景:搜索页,搜索栏下方的历史搜索

场景分析:每次搜索的关键词都要放到历史搜索里面,首页关键词是要定义的keyname,这个关键词可以放到cookie或者sessionStory里面,我用的uniapp,放到了本地缓存里面,实现方式:

  • 获取搜索词
  • 添加历史搜索
  • 清除历史搜索

获取历史搜索,代码中去掉重复的搜索词

 getHistory(keyname) {
    let that = this
    let words = ''
    if(uni.getStorageSync(keyname)) { //判断缓存中存没存搜索词
      words =  JSON.parse(uni.getStorageSync(keyname))
    }
    if(!words){
      return []
    }
    for (let i = 0; i < words.length; i++) {
      if (words[i] == "" || typeof(words[i]) == "undefined" || words[i] == "") {
        words.splice(i,1)
        i= i-1
      }
    }
    return words
  },

添加历史搜索,先从getHistory中取搜索词words,然后看历史搜索词中是否包括关键词(就是自己输入的关键词),没有添加,有了删除,然后再将keyname重新放入storage中。

 addToHistory(keyname , keyword) {
    let that = this
    let words = that.getHistory(keyname)
    let has = words.includes(keyword)
    if (!has) {
      // 数组末尾 删除 , keyword 数组第一位
      let length = words.length
      if (length >= maxLength){
        words.pop()
      }
      words.unshift(keyword)
      uni.setStorageSync(keyname,JSON.stringify(words))
    }
  },

清除关键词,从缓存中移除就可以

 clearHistory(keyname) {
    uni.removeStorageSync(keyname)
  }

页面中渲染:

  • 首先import上面封装的js
  • 然后再data中定义historySearch:‘’
  • 然后再onshow中去调用
  • 页面中直接v-for循环historySearch
  <view class="search-touch" v-if="historySearch.length">
            <view class="hot-search">
                <view class="hot-tit">历史搜索</view>
                <view class="hot-con clearfix">
                    <view class="item" v-for="(item, index) in historySearch" :key="index" @click="goSearch(item)">{{ item }}</view>
                </view>
            </view>
        </view>
  onShow() {
        //获取历史搜索
        this.historySearch = getHistory();
    },

总结:简单的几个方法就直接前端自己处理了历史搜索的问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值