在微信小程序中,实现搜索历史效果的关键在于合理利用微信小程序提供的本地存储API,如`wx.setStorageSync()`和`wx.getStorageSync()`。这两个同步函数分别用于设置和获取存储在本地的数据,它们是实现搜索历史功能的基础。
我们需要理解实现搜索历史效果的逻辑。当用户在搜索框中输入关键词并进行搜索后,我们将这一关键词保存到本地存储中。如果用户再次打开搜索界面,我们从本地存储中获取之前保存的搜索历史,并显示在界面上供用户再次选择。
在给出的代码中,WXML部分定义了一个搜索框和相关的事件绑定。`<input>`组件绑定了`bindinput`事件,当用户在搜索框内输入时触发`getSearchKey`函数,将输入的关键词实时更新到页面数据中。`bindblur`事件则在输入框失去焦点时触发`routeToSearchResPage`函数,这通常发生在用户完成输入后点击搜索或者点击页面其他地方。
CSS部分提供了样式定义,使搜索框和历史记录列表具有良好的视觉效果。例如,`.search-box`设置了背景颜色和边距,`.icon`和`.item`定义了图片和历史记录项的样式。
JavaScript部分(可能不完整)展示了如何处理这些事件。在`index.js`中,我们定义了一个Page对象,其中包含`data`属性,用于存储当前页面的状态,包括搜索关键词`searchKey`和历史记录数组`history`。
`getSearchKey`函数接收输入框的值,并通过`setData`更新`searchKey`的值,这样用户在输入时,界面上可以实时显示当前的搜索关键词。
`clearHistory`函数用于清空搜索历史。它不仅重置了Page对象的`history`数组,还使用`wx.setStorageSync("history", [])`清除了本地存储中的历史记录。
`routeToSearchResPage`函数处理输入框失去焦点的事件。在此场景下,我们可能期望在此处将`searchKey`的值添加到`history`数组,如果该关键词尚未存在于历史记录中。然后,将更新后的`history`数组存储回本地,如`wx.setStorageSync('history', this.data.history)`。由于代码片段不完整,这部分逻辑需要补充。
总结来说,微信小程序结合Storage实现搜索历史效果主要涉及以下几个步骤:
1. 监听用户在搜索框内的输入,实时更新搜索关键词。
2. 当用户完成输入(失去焦点)时,检查并更新搜索历史。
3. 将新的搜索关键词添加到历史记录数组,避免重复。
4. 将更新后的历史记录数组保存到本地存储。
5. 在搜索历史界面加载时,从本地存储中获取历史记录并显示。
这种实现方式允许用户在多次搜索后快速访问之前的查询,提高了用户体验。同时,由于使用了本地存储,即使用户关闭小程序,搜索历史也能得到保留。