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