[蔡小北-每日一题](设计)搜索组件(具有自动补全功能组件)你需要考虑哪些问题?(2022-02-08)

300 阅读2分钟

定义

Autocomplete 自动补全是一个普通文本输入框,它通过一组建议的选项来帮助用户输入。类似百度和Google的搜索框。

通用组件

我们设计组件的原则,首先看的是组件的通用性、可移植性和可扩展性,组件的粒度要小,其次要保证安全性。

大概设计

  • 一个文本框 + 搜索按钮 + 右侧扩展区

  • 文本框的监听 focus、blur、change等事件

focus、blur处理显示隐藏
change 处理props的题词搜索事件
search处理props的搜索事件

右侧的扩展区通过{props.children} react或者slot vue来处理

change 和 search 也可以通过emit事件来进行处理

安全性

防攻击,我们要处理用户的每一次输入,进行转义后提交,后端人员也必须做相应的字符处理流程。

性能

用户如果一直在不停的输入/删除,我们需要不停的进行服务器请求,有没有一个方式可以有效的限制用户的请求数,又不影响用户体验的方法呢?当然有的,那就是利用防抖/节流,这里还是建使用防抖来进行限制。

其他方向

敏感词提示、字数限制 保存用户的一些输入/搜索记录,后端在做联想搜索时会更方便 增加一些用户体验方面的功能,比如一些展示效果,一键清空等功能

注意事项

  • 不要无限制的扩充组件的功能,防止臃肿
  • 要尽可能解耦,用多组件组合的方式,或者使用HOC来协助
  • 在必要的情况下,可以定义一些配置项,但也不要过于复杂化

注重业务需求和用户体验是最重要的,不要为了实现而实现,在保证用户体验的前提下,多思考下对其他组件和其他协作开发者的影响。

[每日一题] ---> 不断的丰富自己 ✌️