Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

죽이죽이

React : debounce 본문

React

React : debounce

죽이죽이 2024. 2. 20. 14:49

debounce

※ 설명
- 동일한 이벤트가 반복해서 실행되는 경우 일정 시간 지연 시킨 후 처리한다.
- 일정 시간 안에 동일 이벤트가 다시 발생하면 마지막 발생 시점부터 일정 시간을 지연한다.

※ 예시
import React, { useEffect, useState } from "react";

export default function CleanUp() {
  const [text, setText] = useState("");
  const [textIsValid, setTextIsValid] = useState(false);

  // useState로 선언한 text의 값이 바뀔때마다 useEffect 내부 실행
  useEffect(() => {
    // 0.5초 마다 Validation 진행
    const timer = setTimeout(() => {
      console.log("Validation");
      // 텍스트가 있을 경우 true
      setTextIsValid(text.trim());
    }, 500);

    // 0.5초가 되기 전에 값이 바뀌면 Clean Up 함수 실행
    return () => {
      console.log("Clean Up!!!");
      clearTimeout(timer);
    };
  }, [text]);

  const handleChange = (e) => {
    setText(e.target.value);
  };

  return (
    <div>
      <input type="text" value={text} onChange={handleChange} />
    </div>
  );
}​



※ 화면
- 불필요한 Validation을 수행하지 않을 수 있다.
- setTimeout 함수 안에 있는 Validation이 시작하기 전에 새로운 input 값을 입력할 경우 Clean Up 함수를 사용해 clearTimeout을 해주는 방식이다.

 

'React' 카테고리의 다른 글

React : Form 유효성 검사 3가지 방식  (1) 2024.02.26
React : Custom Hook  (0) 2024.02.23
React : Portal  (0) 2024.02.19
React : key props가 필요한 이유  (0) 2024.02.13
React : 이미지 처리  (0) 2024.02.13