You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cache는 클래스로 만든 뒤 index.ts에서 instance 생성 후 useSuggestions으로 넘겨줍니다.
cache를 얼마나 유지할 것인지 cacheTime(ms)를 constructor에서 받고 있으며, 따로 설정하지 않을 경우 기본값은 5분으로 설정하였습니다.
cache.set 실행 시 해당 cacheMap expireTime에 Date.now() + cacheTime을 설정하고, cache.get을 할 때 Date.now()와 expireTime을 비교하여 지났으면 remove, 지나지 않았으면 캐시된 데이터를 리턴해주도록 구현하였습니다.
2. API 호출 횟수 조절 방법
API 호출을 조절하는 방법에는 여러가지가 있지만 그 중 debounce가 API 호출을 줄이는데 더 효과적이라고 생각하여 선택했습니다.
다만 유저 입력이 끝난 뒤에 결과가 보여지기 때문에 사용자 경험이 좋지 않을 수 있다는 의견이 있었지만. 이는 debounce delay 시간을 짧게 설정함으로 해결할 수 있었습니다.
3. 키보드로 추천 검색어 이동하기
키보드 입력시 키 값을 전달 받고, ArrowUp, ArrowDown, Enter 키가 각각 다른 동작을 수행하도록 설계하였습니다.
자동완성된 단어들은 Focus Index의 state에 따라 조절되며 ArrowUp의 경우 Index를 -1 씩 줄이고, ArrowDown의 경우 Index를 1씩 늘립니다.
Enter 키를 입력했을 경우에는 자동완성 리스트의 해당 index를 가지는 단어가 input에 반영되도록 구현하였습니다.
💡 Best Practice 선정 과정
Best Practice 선정 과정은 레포지토리 Wiki에 정리되어 있습니다. Wiki 바로가기