lottie
Seungjun's blog
blog
useEffect

useEffect는 컴포넌트가 렌더링된 후에 실행되는 함수입니다.

useEffect 내부에서는 순서 보장이 되지만, useEffect와 다른 코드 사이에서는 순서 보장이 되지 않습니다.** ,

예시코드

const [name, setName] = useState("Alice");
useEffect(() => {
  console.log(name); // Bob
}, []);
setName("Bob");
console.log(name); // Alice

위 코드에서 useEffect 내부의 console.log는 setName 이후에 실행되므로 "Bob"을 출력하지만, 그 밖의 console.log는 setName 이전에 실행되므로 "Alice"를 출력합니다.


useEffect에서 state 값을 변경하면 컴포넌트가 다시 렌더링됩니다. 이때 의존성 배열에 state 값을 넣어주면 useEffect가 다시 실행됩니다. 예를 들어,

const [count, setCount] = useState(0);
useEffect(() => {
  console.log(count); // 0 -> 1 -> 2 ...
  setCount(count + 1);
}, [count]);

위 코드에서 useEffect 내부에서 count 값을 변경하고, 의존성 배열에 count 값을 넣어주었습니다. 그러면 컴포넌트가 렌더링될 때마다 useEffect가 다시 호출되고 count 값이 증가합니다.


하지만 이렇게 하면 무한 루프에 빠질 수 있으므로 주의해야 합니다. 의존성 배열을 잘 관리하고 필요한 경우에만 state 값을 변경하는 것이 좋습니다.