개발, 코딩/App - React Native
setInterval 지연현상 - 해결책
Websterking
2022. 3. 16. 15:31
반응형
https://mingule.tistory.com/65
React에서 setInterval 현명하게 사용하기(feat. useInterval)
들어가기 Babble의 방 목록 페이지에 들어가면 유저가 생성한 방들이 쭉 나열되어 있는 것을 볼 수 있다. (안타깝게도 유저가 없으면 방도 없다ㅜㅜ) 그리고 이 방들은 5초마다 서버에 요청을 보
mingule.tistory.com
위 블로그에서 언급한 원인으로
불완전한 함수인 setInterval로 인해
버그를 맞이할수있다.
간략히 말하자면
setInterval이 지연 시간을 보장해주지 않기 때문
따라서 ,
나는 빠른 주기로
state를 업데이트 하는
stopWatch 훅스를 만들때
아래와 같이 처리해서 목적을
달성하였따.
export function useStopWatch(start: boolean) {
const [time, setTime] = useState(0);
useEffect(() => {
let interval: any = null;
if (start) {
const startedTime = Date.now();
interval = setInterval(() => {
setTime(Date.now() - startedTime);
}, 50);
} else {
if (interval) clearInterval(interval);
}
return () => {
if (interval) clearInterval(interval);
}
}, [start]);
return { time, setTime };
}
반응형