`render`: render tree를 만들기 위한 계산을 하는 과정.
`paint`: 위 단계에서 만들어진 render tree를 이용하여 실제 화면에 그리는 과정.
웹 브라우저에는 위와 같은 단계가 있는데, useEffect와 useLayoutEffect는 두 단계의 어느 지점에서 실행되는지를 결정한다.
`useEffect`: render, paint 모두 끝나고, 실행된다.
`useLayoutEffect`: render가 끝나고 실행되며, 실행이 완료된 후에 paint 과정을 거친다.
그렇기 때문에 useEffect를 사용한 경우에는 화면이 깜빡거리는 현상을 볼 수 있고, useLayoutEffect는 너무 오래 걸리는 작업을 할 경우에는 화면이 늦게 그려지는 현상을 볼 수 있다.
둘 다 시점과 연산 복잡도에 따라서 적절히 사용해야할 것 같다.