그래서 찾아보다 Debounce 적용하기로 하였다!
useEffect
를 사용하여 입력값이 변결될 때마다 디바운스를 적용하여 API 요청 지연시킴 // 검색어 데이터
const getdata = async () => {
const response = await fetch(
`${process.env.NEXT_PUBLIC_SERVER_BASE_URL}/search/aladin/keyword?keyword=${keyword}`,
);
const data = await response.json();
setSearchData(data);
};
// keyword가 변할 때마다 debouce 이벤트로 setTimeout을 사용하여 0.4초후에 데이터를 호출
useEffect(() => {
const debounce = setTimeout(() => {
const word = keyword as string;
if (word.length > 0) {
getdata();
}
}, 400);
return () => clearTimeout(debounce);
}, [keyword]);