useEffect(()=>{ 실행할코드 }, [count])
-> count라는 변수가 변할때만 useEffect 안의 코드가 실행된다.
useEffect(()=>{ 실행할코드 }, [])
useEffect(()=>{
두번째 실행
return ()=>{
첫번째 실행
}
}, [count])
항상 기능을 알면 어디서 사용하는지 언제 사용하는지를 알아야 한다!!
복잡하고 어려운 숙제할 때 책상을 싹 치우고 하면 잘되는 것처럼 useEffect 안에 있는 코드를 실행할 때도 싹 치우고 깔끔한 마음으로 실행하는게 좋을 때가 있다.
ex) setTimeout() 쓸때마다 타이머가 하나 생기는데 useEffect 안에 썼기 때문에 컴포넌트가 mount 될 때마다 실행된다.
그렇게 되면 타이머가 100개 1000개 생길 수 있다.
이런 버그를 방지하기 위해 useEffect 에서 타이머를 만들기 전 기존 타이머를 싹 지우는 코드를 짜야한다. (clean up function)
useEffect(()=>{
let a = setTimeout(()=>{ setAlert(false) }, 2000)
return ()=>{
clearTimeout(a)
}
}, [])
useEffect(()=>{ 실행할코드 })
useEffect(()=>{ 실행할코드 }, [])
useEffect(()=>{
return ()=>{
실행할코드
}
})
useEffect(()=>{
return ()=>{
실행할코드
}
}, [])
useEffect(()=>{
실행할코드
}, [state1])