한 줄 요약: useEffect 는 CRP 에서 layout 과 paint 가 다 끝난 후 callback 함수가 실행되고, useLayoutEffect 는 layout 과 paint 사이에 callback 함수가 실행된다.
useEffect
는 화면에서 paint 과정이 모두 지난 후 콜백함수를 실행한다. useLayoutEffect
는 화면에서 paint 가 되기 전에 layout 값을 확인하기 위해 사용하는 함수이다. layout docs 에선 hover 시 툴 팁을 화면에 뿌려줄 때, paint 되기 전에 자신의 마우스 포인터가 어디에 있는 지에 따라 위치가 달라져야 하기 때문에 일어나는 일로 예시를 들었다.
결론
- component 의 크기에 직접 접근해서 paint 해야 할 필요가 있을 경우, useLayoutEffect를 사용한다.
- 하지만 react 에서는 성능 상의 이슈로 useLayoutEffect를 최대한 사용하지 않는 것을 권장하고 있다.