react의 Component Class 방식을 사용하다가 react hook을 알게 되니 신세계이다.
state의 변경사항을 구독하고, 해제하는 code가 예를 들면 componentDidMount, componentDidUpdate 등.. 으로 파편화 되어 있고, 확인해야하는 섬세함이 필요했고 이것이 자주 또는 가끔 버그를 유발하기도 했다.
리액트 effect가 수행되는 시점에 이미 DOM이 업데이트되었음을 보장한다.
clean-up이 때로는 성능저하를 일으키므로 두번째 parameter로 배열을 넘기면 배열의 값 중 하나라도 변경되면 업데이트된다.
배열의 요소 중 하나라도 업데이트되면 effect를 재실행한다. (!!!!)
두번째 parameter로 [] 빈배열을 보낸다.
clean-up 함수를 리턴하고, 두번째 parameter로 [] 빈 배열을 보낸다.
ComponentDidUpdate에서 prevProps랑 비교하면서 바뀐 값을 watch하는 작업이 생각보다 귀찮고 readability에도 좋지 않다고 생각했는데 useEffect는 참 편리한 것 같다 (?)