자동완성 검색
문제
검색어를 입력하면 추천 검색어를 보여주는 기능을 설계해봅니다.
요구사항
- 입력 중 추천 검색어를 보여준다.
- 요청을 너무 많이 보내지 않는다.
- 늦게 온 응답이 최신 결과를 덮어쓰지 않게 한다.
상태 설계
query: 입력값suggestions: 추천 목록isLoading: 불러오는 중인지 여부error: 오류 상태activeIndex: 키보드로 선택 중인 항목
API 요청 전략
- debounce를 둔다.
- request 취소 또는 request id 비교로 오래된 응답을 막는다.
성능 고려사항
- 짧은 query에서는 요청하지 않는다.
- 같은 검색어 결과는 cache할 수 있다.
접근성 고려사항
- keyboard 이동을 지원한다.
- 입력창과 추천 목록을 접근성 속성으로 연결한다.
선택 기준
- debounce 시간이 길면 요청 수는 줄지만 반응성이 떨어집니다.
- cache를 추가하면 사용성은 좋아지지만 갱신 기준이 필요합니다.