이 함수의 시그니처는
useEffect와 동일하나, 모든 DOM의 변경 후에 동기적으로 발생한다
useEffect와 동일 하다는 것은 두 훅의 형태나 사용 예제가 동일하다는 의미다
useLayoutEffectcan hurt performance. PreferuseEffectwhen possible.
useEffect보다 성능이 떨어진다는 의미useLayoutEffect 실행이 종료될 때까지 기다린 다음 화면을 그린다는 의미useLayoutEffect를 실행useEffect를 실행useLayoutEffect은 브라우저에 변경사항이 반영 되기 전에 실행되고 useEffect은 변경사항이 반영된 후에 실행되기 때문이다import { useState, useEffect, useLayoutEffect } from 'react';
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log('useEffect', count);
}, [count]);
useLayoutEffect(() => {
console.log('useLayoutEffect', count);
}, [count]);
function handleClick() {
setCount((prev) => prev + 1);
}
return (
<>
<h1>{count}</h1>
<button onClick={handleClick}>+</button>
</>
);
}
export default App;