WORK/WEB
[React] SetInterval 을 대신할 UseInterval
memoriserf
2025. 3. 31. 10:48
기존 웹 프로젝트를 고치면서 UseEffect내에 사용하는 기존 SetTimeout 과 SetInterval 을 이요하는 호출 프로세스는 지속적으로 켜놓는 웹프로젝트에 언제 잘못될지 모르는 시간폭탄 같았다.
어느순간 꼬이기 시작하면 Client 브라우저가 꺼져버리는 현상이 발생하고 브라우저가 꺼지면 Dev Tool에서 보던 데이터도 날아가서 너무 힘들었다.
그렇다고 이 모든걸 파일로 로깅하면 데이터의 양이 너무 방대하고...
아무튼 구글링을 해보니 커스텀 훅을 누군가 올려놨다.
참고링크
UseInterval 뿐 아니라 굉장히 좋은 훅들이 많이 있으니 하나씩 둘러볼 예정.
우선 UseInterval을 사용하기 위해서 파일을 하나 생성한다.
useInterval.js
import { useEffect, useRef } from "react";
const useInterval = (callback, delay) => {
const savedCallback = useRef();
// Remember the latest callback.
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
// Set up the interval.
useEffect(() => {
function tick() {
savedCallback.current();
}
if (delay !== null) {
let id = setInterval(tick, delay);
return () => clearInterval(id);
}
}, [delay]);
};
export default useInterval;
JS 파일을 하나 생성 후 사용할 곳에서 import 하여 사용한다.
import useInterval from "./useInterval";
useInterval(() => {
//이곳에 사용할 함수를 넣는다.
}, 1000); <-- interval 계수는 밀리세컨드
딜레이값을 동적으로 할당하여 인터벌을 조절해주니 훌륭하다.