컴포넌트의 부수효과를 처리하기 위해서 사용한다. 컴포넌트로 부터 값을 받아 앨리먼트를 반환 해야한다 하지만 반환하기 전에 이런 부수적인 작동때문에 응답이 느려진다 따라서 이 로직을 랜더링을 마친 후에 실행 하도록 설정해 주는것이 useEffect hook이다.
useEffect의 철학은 sideEffect를 라이프 사이클로 로직을 개선하는것이 아닌 관심사에 따라 로직을 개선하는 것으로 보는게 정확함
useEffect(()=>{
state handle 하는 코드
},[state])
state handle 하는 코드
useEffect의 callback안의 state는 최신 상태이고 밖에 있는 state는 이전버전으로 값이 나온다.
매 랜더링마다 컴포넌트가 새로운 값을 갖기 때문에 그 값과 이전값과 비교를 해서 callback을 실행시킬지 말지를 결정한다.