💡:做什么?

对了,不管你是做 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会跳转在组件里边,我们在哪儿写钩子和方法?
lifetimesmethods以前的写法是不写在一个对象里边的,当然,如果写熟悉了,不管是写在一起,还是不写在一起都是一样的,不过这就是规范的问题了!
点击后传数据? -> 有两种做法:
wxml里边添加属性data-id -> item.id,透过event形参拿到值this.properties.item.id -> 保证属性叫item,不能叫itemInfo之类的选择哪种方案呢? -> 取决于你怎么做 -> 如果你不想传event,那就用第二种,如果你想传event,那就用第一种
我们选择第二种
💡:优化思路
