💡:做什么?
对了,不管你是做 PC 端,还是移动端,如小程序、手机 web 应用、安卓/IOS 应用,面对这种搜索功能都会做防抖操作,毕竟用户输入非常快的话,请求就会非常频繁了
比如:用户想搜abc
,结果发送了三次请求 -> 搜索a
、搜索ab
、搜索abc
对于这种情况,会导致:
对于这个搜索功能的处理,我们一般用防抖来处理,而不是节流,当然节流也行哈
💡:防抖处理搜索请求
防抖 -> 偏后拿到结果
对谁防抖?
创建一个debounce.js
:
300
,你输入一个字符会等待300ms
后才发送请求,如果,你在这300ms
期间输入了其它字符,那么就会重新等待300ms
-> 体现防抖效果的话,你可以设置成1000ms
只要你输入停顿足足300ms
就会发送一次请求
💡:搜索建议优化:输入的字符是否在搜索结果里边高亮(也是绿色)匹配?
观察其它 APP:
a
,是否要匹配爱人错过
、阿拉斯加湾
这样的拼音是a
开头的中文字符? -> 没有看到手机 QQ 音乐、QQ 音乐小程序有做 -> hotoo/pinyin: 汉字拼音 ➜ hàn zì pīn yīn -> 这个库小程序编译不通过 -> 推荐用 zh-lx/pinyin-pro: 中文转拼音、拼音音调、拼音声母、拼音韵母、多音字拼音、姓氏拼音、拼音匹配最后一点看产品需求
💡:优化搜索建议
怎么做?
rich-text
:
我们发微信时,带表情包的信息就可以用富文本来做
你可以完善这个功能:
pinyin
库57 33
💡:优化代码
文件命名 -> string-to-nodes.js
(这个目录里边都是用-
链接多个单词的,那么你可以用这个,不然,你可以stringToNodes.js
) or string2nodes.js
-> 推荐后者
💡:搜索功能
搜索三种情况:
搜索接口:
事件监听:
bind:search="handleSearchAction"
-> 回车提交bindtap="handleKeywordItemClick"
-> 点击搜索建议 Itembindtap="handleKeywordItemClick"
-> 点击默认搜索事件处理函数存在重复代码 -> 可优化
默认的遍历情况:
代码优化后的遍历:
注意:当搜索输入框为空时,搜索结果也得清空
💡:优化
有搜索结果就不要有搜索建议了
👇:展示搜索结果
细节处理:
fixed
bug(部分安卓手机不兼容),那就用scroll-view
其它功能补充:
handleSearchAction
里边做搜索功能 -> 电商等常用 -> 复杂的地方只有防抖
💡:播放页 -> 该项目重点
谁会跳转到播放页?
song-item-v1
和song-item-v2
会跳转在组件里边,我们在哪儿写钩子和方法?
lifetimes
methods
以前的写法是不写在一个对象里边的,当然,如果写熟悉了,不管是写在一起,还是不写在一起都是一样的,不过这就是规范的问题了!
点击后传数据? -> 有两种做法:
wxml
里边添加属性data-id -> item.id
,透过event
形参拿到值this.properties.item.id
-> 保证属性叫item
,不能叫itemInfo
之类的选择哪种方案呢? -> 取决于你怎么做 -> 如果你不想传event
,那就用第二种,如果你想传event
,那就用第一种
我们选择第二种
💡:优化思路