React
Debounce In UseEffect
kohi ☕
2023. 3. 26. 16:15
Debounce
는 이벤트 핸들러의 과도한 횟수가 발생하는 경우를 효과적으로 제어하여 성능의 개선을 목표로 하는 프로그래밍 기법으로, 연이어 호출되는 함수들 중 마지막 함수만 호출하도록 하는 기법이다. 해당 프로젝트에서는 검색 페이지에서 키워드 입력 시, 키워드 입력 완료 후 특정 시간 이후 API를 요청하도록 적용하였다.
🗒️ 적용 전 코드
- 키워드를 담을 state를 선언해 주고 input에 onChange 이벤트를 적용한다
- 의존성 배열에 keyword를 전달해서 keyword의 값이 변동될 때마다 api를 요청한다
const [keyword, setKeyword] = useState<string>('');
useEffect(() => {
// api call
searchFeedList(keyword, setFeedList);
}, [keyword]);
🗒️ 적용 후 코드
- setTimeout을 통해 delay(500) 이후에 debouncedKeyword를 얻는다.
- debouncedKeyword가 변동될 때마다 api를 요청한다.
const [keyword, setKeyword] = useState<string>('');
const [debouncedKeyword, setDebouncedKeyword] = useState<string>('');
useEffect(() => {
const timer = setTimeout(() => {
return setDebouncedKeyword(keyword);
}, 500);
return () => {
clearTimeout(timer);
};
}, [keyword]);
useEffect(() => {
searchFeedList(keyword, setFeedList);
}, [debouncedKeyword]);
🗒️ 적용 전후 비교