Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

kohigowild

Debounce In UseEffect 본문

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]);

 

🗒️ 적용 전후 비교

 

'React' 카테고리의 다른 글

리액트 이미지 최적화 및 성능 개선  (0) 2023.03.26
Ref의 활용과 useRef  (0) 2023.01.02
[React] props와 state  (0) 2022.12.15
REACT 컴포넌트 생명 주기 (Life Cycle)  (0) 2022.12.10
React :: COIN TRACKER  (0) 2022.11.29