[260103] TIL

Today I Learned (2026-01-03)

๊ฒ€์ƒ‰ํ•  ๋•Œ Debounce ์ตœ์ ํ™” ํ•˜๊ธฐ

ํด๋กœ์ €๋กœ ๊ตฌํ˜„

const handleCloserInputChange = (() => {
  let time: number | null = null;

  return (e: ChangeEvent<HTMLInputElement>) => {
    if (time) clearTimeout(time);
    time = window.setTimeout(() => onSearch(e.target.value), 300);
  };
})();
  • ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋” ์‹œ, ์ƒˆ๋กœ์šด ํด๋กœ์ €๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋ฆฌ์•กํŠธ ์ˆ˜๋ช…์ฃผ๊ธฐ์™€ ๋ถ„๋ฆฌ๋จ, ๋ฆฌ๋ Œ๋”/strict mode/ ๋™์  props์— ์ทจ์•ฝ

useRef๋กœ ๊ตฌํ˜„

const debounceTime = useRef<number | null>(null);

const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {
  if (debounceTime.current) clearTimeout(debounceTime.current);
  debounceTime.current = window.setTimeout(() => onSearch(e.target.value), 300);
};
  • react ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ์†ํ•จ
  • cleanup ๊ฐ€๋Šฅ
  • ์ตœ์‹  ๊ฐ’ ์œ ์ง€ ๊ฐ€๋Šฅ
  • concurrent/strict mode ๋Œ€์‘

Categories:

Updated:

Leave a comment