side Effect들을 함수의 body 자리(render)에서 실행시키면 안됨.
함수 컴포넌트의 리턴 값은 UI 요소, state, props의 변화가 있을 때마다 함수가 실행하고 리턴함. 이 말은 매 렌더링 때마다 함수 body에 있는 로직이 실행된다는 뜻.
렌더링을 막거나, 자동으로 불필요한 로직이 실행되는 것 되는 것을 막기 위해서 useEffect를 사용함
Side Effect를 일으키기 적절한 장소로서 useEffect hook을 제공
Side Effect를 렌더링 이후에 발생시킴(예외: useLayoutEffect). useEffect가 수행되는 시점에 이미 DOM이 업데이트되었음을 보장한다는 뜻이고, 바꿔 말하면 Side Effect가 렌더링에 영향을 주지 않도록 설계되었음을 의미.
Effect를 일으킬 타이밍은 앞서 설명했던 useEffect의 두 번째 인자인 의존성 배열(Dependancy Array)를 통해 표현