uniapp | 搜索页 显示或清除历史记录 | 代码分析

一、主要功能和演示

1.搜索页的主要功能

(1)输入关键词,点击搜索(或键盘回车),页面跳转到搜索结果页
(2)之前搜索过的关键词在历史记录里显示,并且按最近到最远搜索过的顺序排列
(即:若搜索一个关键词时,此关键词在之前已在历史记录里(非第一位),那么本次搜索过后,此关键词会在历史记录里列第一位,之前的位置取消)
(3)点击“清除全部”后,历史记录全部清除

2.搜索页演示


在这里插入图片描述

二、用到的uniapp相关函数

1.uniapp支持如下 页面生命周期函数:

官网相关内容的链接

函数名 说明
onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参)
onNavigationBarButtonTap 监听原生标题栏按钮点击事件,参数为Object
onNavigationBarSearchInputChanged 监听原生标题栏搜索输入框输入内容变化事件
onNavigationBarSearchInputConfirmed 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发

2.uniapp数据缓存

官网相关内容的链接

函数名 说明
uni.setStorageSync(KEY,DATA) 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口
uni.getStorageSync(KEY) 从本地缓存中同步获取指定 key 对应的内容
uni.removeStorageSync(KEY) 从本地缓存中同步移除指定 key

三、代码分析

重要函数

(1)添加历史记录并更新顺序addHistory()

addHistory(searchValue){
   
  if(!searchValue){
    return this.$toast('请输入关键词')
  //查找searchValue是否在历史记录的list里
  //获取searchValue在历史记录list里的index
  const findItem = this.list.findIndex(item => item == searchValue)
  //若searchValue在历史记录list里,且searchValue不在list的第一位
  if (findItem !== -1 && findItem !== 0) {
   
    //删除历史记录list里的曾经的同值searchValue
    this.list.splic(findItem,1)
    //unshift在list开头插入searchValue
    this.list.unshift(searchValue)
  } else {
   
    this.list.unshift(searchValue)
  }
  
  //将更新后的list存储在本地缓存中指定的'searchHistory'中
  uni.setStorageSync('searchHistroy', JSON.stringify(this.list))
  //页面跳转至搜索结果页
  this.$navigateTo(`/pages/search-result/search-result?value=${
     searchValue}`)
}

(2)清除历史记录clearHistory()

clearHistory() {
   
  //显示模态弹窗,这里同时有确定和取消按钮,类似于一个API整合了html中:alert、confirm。
  uni.showModal({
   
    content:'是否清除历史记录',
    success: (res) => {
   
      //如果confirm,则清除历史记录的本地缓存并重新赋空值给list
      if(res.confirm) {
   
        uni.removeStorageSync('searchHistory')
        this.list = []
      } else if (res.cancel){
   
      
      }
    }
  }
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp跳转面不产生历史记录的方法是使用uni.reLaunch或uni.redirectTo进行面跳转。其中,uni.reLaunch会关闭当前面并跳转到目标面,而uni.redirectTo只会关闭当前面,不会保留历史记录。这样就可以实现跳转面而不产生历史记录的效果。123 #### 引用[.reference_title] - *1* [uniapp 跳转面 和 记录一些其他的坑](https://blog.csdn.net/paidaboluo/article/details/126766126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [基于uniapp缓存写的搜索历史记录,清空历史记录,点击历史记录直接搜索](https://blog.csdn.net/weixin_45729937/article/details/123466841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Uni-App 简单的界面跳转实现过程记录uni.navigateTo)](https://blog.csdn.net/victor_E_N_01185/article/details/126767338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值