useEffect 와 useLayoutEffect 의 차이는?
먼저 훅의 실행 흐름과 Render, paint 의 개념을 알아두면 좋다.
Render (레이아웃 배치)
DOM tree를 만들기위해서 HTML파일을 파싱하는 style 속성을 계산하는과정.
paint (그리기)
실제 화면에 그려주기위해 Layout을 표시하고 업데이트하는 과정.
useEfffect
useEffect 는 컴포넌트 레이아웃 배치(render)와 그리기(paint)를 완료한 후 비동기적(asynchronous)으로 실행됩니다.
paint 된 후 실행되기 때문에, useEffect 내부에 dom에 영향을 주는 코드가 있을 경우, 사용자 입장에서는 화면의 깜빡임을 보게 됩니다.
useLayoutEffect
useLayoutEffect 는 컴포넌트 레이아웃이 배치(render)된 후 동기적(synchronous)으로 실행되며, 그 이후에 그리기(paint) 가 진행된다. 그려지기(paint) 전에 실행되기 때문에 dom을 조작하는 코드가 존재하더라도 사용자는 깜빡임을 경험하지 않습니다.
참고
'언어 Language > 리액트 React' 카테고리의 다른 글
Next.js 은 뭘까, 왜 사용할까? (0) | 2023.02.01 |
---|---|
[React] 클래스형 컴포넌트와 함수형 컴포넌트 (0) | 2022.07.26 |
댓글