useEffect(() => {
// func
return () => {
// cleanup func
}
}, [deps]);
deps : 의존성 배열 (의존되는 값이 배열에 들어감)
- 비어있는 경우 컴포넌트가 처음 나타날 때에만 실행된다.
cleanup 함수 : useEffect의 return 함수. 컴포넌트가 바뀌기 전, 제거되기 전에 호출된다.
컴포넌트가 마운트될 때 일반적으로 추가하는 작업
- props로 받은 값을 컴포넌트의 state로 설정
useEffect의 함수 호출 시점은 UI가 화면에 나타난 이후이기 때문에 DOM에 바로 접근해도 괜찮다.
컴포넌트가 언마운트될 때 일반적으로 추가하는 작업
- clearInterval, clearTimeout 등
import { useEffect } from "react";
function User({ user, onRemove, onToggle }) {
const { username, age, id, active } = user;
useEffect(() => {
console.log("컴포넌트가 화면에 나타납니다.");
return () => {
console.log("컴포넌트가 화면에서 사라집니다.");
};
}, []);
function User({ user, onRemove, onToggle }) {
const { username, age, id, active } = user;
useEffect(() => {
console.log("user값이 설정되었습니다.");
console.log(user);
return () => {
console.log("user값이 바뀌기 전");
console.log(user);
};
}, [user]);
useEffect에서 props로 받아온 값을 참조하거나 useState에서 관리하는 값을 참조할 경우 최신 상태를 유지하기 위해 deps 배열을 넣어야 한다.