定义
Autocomplete 自动补全是一个普通文本输入框,它通过一组建议的选项来帮助用户输入。类似百度和Google的搜索框。
通用组件
我们设计组件的原则,首先看的是组件的通用性、可移植性和可扩展性,组件的粒度要小,其次要保证安全性。
大概设计
-
一个文本框 + 搜索按钮 + 右侧扩展区
-
文本框的监听 focus、blur、change等事件
focus、blur处理显示隐藏
change 处理props的题词搜索事件
search处理props的搜索事件
右侧的扩展区通过{props.children} react
或者slot vue
来处理
change 和 search 也可以通过emit事件来进行处理
安全性
防攻击,我们要处理用户的每一次输入,进行转义后提交,后端人员也必须做相应的字符处理流程。
性能
用户如果一直在不停的输入/删除,我们需要不停的进行服务器请求,有没有一个方式可以有效的限制用户的请求数,又不影响用户体验的方法呢?当然有的,那就是利用防抖/节流,这里还是建使用防抖来进行限制。
其他方向
敏感词提示、字数限制 保存用户的一些输入/搜索记录,后端在做联想搜索时会更方便 增加一些用户体验方面的功能,比如一些展示效果,一键清空等功能
注意事项
- 不要无限制的扩充组件的功能,防止臃肿
- 要尽可能解耦,用多组件组合的方式,或者使用HOC来协助
- 在必要的情况下,可以定义一些配置项,但也不要过于复杂化
注重业务需求和用户体验是最重要的,不要为了实现而实现,在保证用户体验的前提下,多思考下对其他组件和其他协作开发者的影响。
[每日一题] ---> 不断的丰富自己 ✌️