ํฌ์คํธ ๊ฒ์ ๋ก์ง์
debounce
์ ์ฉ์ ๋ํ ํฌ์คํธ์ ๋๋ค.
์์ง ๋ฐฑ์๋์ ์ฐ๊ฒฐํ์ง ์๊ณ ํ๋ก ํธ์ธก ์ฝ๋๋ง ์์ฑํ๊ณ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ๋น์ทํ ํํ์ ํฌ์คํธ๋ง ๋ ๋๋ง๋๊ณ ๋ง์ ํฌ์คํธ๊ฐ ์กด์ฌํ์ง๋ ์์ต๋๋ค.
debounce
๋ ์ผ์ ์๊ฐ๋ด์ ์ฌ๋ฌ๋ฒ ๋์ผํ ์์ฒญ์ด ์จ๋ค๋ฉด, ๊ฐ์ฅ ๋ง์ง๋ง ์์ฒญ๋ง ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํฌ์คํธ ๊ฒ์ ์ input
์ ํ๋์ ๊ธ์๋ฅผ ์
๋ ฅํ ๋๋ง๋ค ํฌ์คํธ๋ค์ ์์ฒญํ๋ ๊ฒ๋ณด๋จ ์ ์ ํ ๋จ์ด๊ฐ ์
๋ ฅ๋์์ ๋ ํฌ์คํธ๋ค์ ์์ฒญํ๋ ๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ธ ๋์ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํด์ ์
๋ ฅ ํ 0.3์ด๊ฐ ์ง๋๋ฉด ํ์ฌ ์
๋ ฅ๋ ํค์๋๋ฅผ ์ด์ฉํด์ ๊ฒ์๊ธ ๊ฒ์์ ๋ํ ์์ฒญ์ ๋ ๋ฆฌ๋๋ก ๊ตฌํํ์ต๋๋ค.
debounce
๋ฏธ์ ์ฉ
debounce
์ ์ฉ
ํฌ์คํธ๋ค์ ๋ถ๋ฌ์ค๋ ๋ก์ง๋ถํฐ ์ ๋ถ ์์ฑํ๊ธฐ์๋ ์ฝ๋๋์ด ๋๋ฌด ๋ง์์ ๋๋ฐ์ด์ฑ์ ์ ์ฉํ๋ ๋ถ๋ถ๋ง ์์ฑํ๊ฒ ์ต๋๋ค.
์ถํ์ ๊นํ์ ์
๋ก๋ ์ ์ ์ฒด ์ฝ๋ ๋งํฌ ์ถ๊ฐํ๊ธฐ
// 2022/05/11 - ๋๋ฐ์ด์ฑ์ ์ฌ์ฉํ ํ์ด๋จธ ์์ด๋ ์ ์ฅ ๋ณ์ - by 1-blue
const timerId = useRef<ReturnType<typeof setTimeout> | null>(null);
// 2022/05/11 - ๋๋ฐ์ด์ฑ ๋ณ์ - by 1-blue
const [debounce, setDebounce] = useState(true);
// 2022/05/11 - ํ์ฌ ํค์๋ ๊ฐ ์ ์ฅํ ๋ณ์ - by 1-blue
const [currentKeyword, setCurrentKeyword] = useState("");
// 2022/05/11 - ํค์๋ ๋ณ๊ฒฝ ์ด๋ฒคํธ ํจ์ - by 1-blue
const onChangeKeyword = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => {
setCurrentKeyword(e.target.value);
setDebounce(false);
if (timerId.current) clearTimeout(timerId.current);
timerId.current = setTimeout(() => setDebounce(true), 300);
},
[timerId]
);
// ์ดํ์ debounce๋ฅผ ์ด์ฉํด์ ๊ฒ์ ์์ฒญ ๋ณด๋ด๊ธฐ