setTimeout쓸 때 주의할 점
let history = useHistory();
let [isPassedTime, setIsPassedTime] = useState(false);
let [inputData, setInputData] = useState("");
useEffect(() => {
let timer = setTimeout(() => {
setIsPassedTime(true);
}, 2000)
return () => clearTimeout(timer);
}, [])
useEffect(() => {
return () => { console.log("component is disappeared") }
//컴포넌트가 사라지기 전에 수행할 작업
})
setTimeout에 시간을 설정하고 나서 시간이 소요되기 전에 화면이동 (컴포넌트가 재 렌더링되는 행동)을 하게되면 버그가 발생할 수 있다.
useEffect 안에 return () => { } 패턴을 사용하면 해당 컴포넌트가 사라질 때 수행하는 로직을 작성할 수 있다.
timer 변수를 선언해서 setTimeout()이 생성한 타이머를 식별하기 위한 값을 할당받고,
이를 return () => {clearTimeout(timer)}처럼 사용해주면 위에서 말한 버그를 방지할 수 있다.
Author And Source
이 문제에 관하여(setTimeout쓸 때 주의할 점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tpgus758/useEffect에서-setTimeout쓸-때-주의저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)