为使小程序中搜索栏目包含获取历史记录、输入内容、提交搜索、清空记录以及跳转到搜索结果页面功能,首先使用 getApp获取小程序全局数据、Page 构建页面,用 recentSearch 和 searchValue 分别存储用户最近搜索记录和输入搜索内容的数组,后可通过 clearSearch 清除前者数据、wx.navigateTo 跳转到商品列表页并将搜索内容作为参数传递。
而为优化用户体验、确保搜索功能的响应速度和稳定性,实现搜索记录清空、支持用户点击历史记录快速搜索,同时使本地存储功能保存的搜索记录可在页面加载时显示,可选用 view 和 input 组件构建搜索框和按钮,通过 placeholder 属性设置输入框的提示文字,将 recentSearch 和 searchValue 两个变量分别用于存储最近搜索记录和用户输入的搜索内容;在页面显示时,通过 getRecentSearch 方法可从本地存储获取历史记录并显示在页面上。另外,通过 clearSearch 以及 goSearch 事件,用户点击垃圾桶图标时会清空本地存储中的历史记录并更新页面显示、点击历史记录时可以直接跳转到结果页面并自动填充内容。
以下为策略具象化:
<view class="container">
<view class="cont-box">
<view class="dis-flex search-input-box">
<view class="search-input">
<view class="dis-flex search-box">
<view class="left">
<icon color="rgba(180,180,180,1)" size="15" type="search"></icon>
</view>
<view class="right">
<input bindinput="getSearchContent" class="input" focus="true" placeh
older="请输入您搜索的商品" placeholderStyle="color:#aba9a9" type="text"
></input>
</view>
<view class="serch-button">
<button bindtap="search" type="warn"> 搜索 </button>
</view>
</view>
<view class="search-cont-box" wx:if="{{recentSearch.length}}">
<view class="title-box">最近搜索
<text bindtap="clearSearch" class="iconfont icon-lajixiang col-7"></tex
t>
</view>
<view class="sale-button-box">
<view class="seconds-kill-li" wx:for="{{recentSearch}}" wx:for-index=
"idx" wx:for-item="recent" wx:key="hotrecent">
<view bindtap="goSearch" class="recent-button" data-text="{{recent}}"
>{{recent}}</view>
</view>
</view>
Page({
data: {
recentSearch: [],
searchValue: '',
},
onShow: function () {
this.getRecentSearch();
},
getRecentSearch: function () {
let recentSearch = wx.getStorageSync('recentSearch');
this.setData({ recentSearch });
},
getSearchContent: function (e) {
this.data.searchValue = e.detail.value;
},
search: function () {
if (this.data.searchValue) {
let recentSearch = wx.getStorageSync('recentSearch') || [];
recentSearch.unshift(this.data.searchValue);
wx.setStorageSync('recentSearch', recentSearch)
wx.navigateTo({
url: '../category/list?search=' + this.data.searchValue,
})
}
},
clearSearch: function () {
wx.removeStorageSync('recentSearch');
this.getRecentSearch();
},
goSearch: function (e) {
wx.navigateTo({
url: '../category/list?search=' + e.target.dataset.text,
})
},
})
参考文献:
[1]m0_64875238.(2022,November10).微信小程序开发(超详细保姆式教 程). CSDN. https://blog.csdn.net/m0_64875238/article/details/127796691
[2]m0_61662775.(2023,May19).微信小程序开发 小白入门篇.CSDN.htt ps://blog.csdn.net/m0_61662775/article/details/130977959.
[3]qq_41222972. (2025, May21). 微信小程序开发快速入门:从注册到 全栈开发实战. CSDN. https://blog.csdn.net/qq_41222972/article/details/1481 23475