잘못 된 내용에 대한 지적은 언제든 환영입니다.
useEffect
useEffect
함수의 구조useEffect(function[, deps])
function
: 수행시키고자 하는 작업deps
: 상태 변경을 감지하고자 하는 값이 들어가는 의존성 배열useEffect(함수)
➡ 마운트useEffect(() => {
console.log("마운트 발생");
});
useEffect(함수, 빈 deps 배열)
➡ 최초 마운트useEffect(() => {
console.log("최초 마운트 발생");
}, []);
useEffect(함수, state 값이 들어간 deps 배열)
➡ 최초 마운트 및 state 값 업데이트const [item, setItem] = useState(0);
useEffect(() => {
console.log("최초 마운트 OR 상태 업데이트");
}, [item]);
setItem(item + 1);
콘솔 출력 결과
최초 마운트 OR 상태 업데이트
최초 마운트 OR 상태 업데이트
const [item, setItem] = useState(1);
// 최초 마운트 시 true로 바꾸어 줄 변수
const isMounted = useRef(false);
useEffect(() => {
if (!isMounted.current) {
// 최초 마운트 시
isMounted.current = true;
} else {
// deps에 들어간 state 값 변경 시
console.log("상태 업데이트");
}
}, [item]);
// state 값 변경
setItem(item + 1);
콘솔 출력 결과
상태 업데이트
const [item, setItem] = useState(1);
useEffect(() => {
console.log("마운트");
// cleanup 함수
return () => {
console.log("언마운트 OR 상태 업데이트 직전");
}, [item]);
// 상태 변경으로 cleanup 함수가 리턴됨
setItem(item + 1);
//콘솔 출력 결과
마운트
언마운트 OR 상태 업데이트 직전
마운트
References
"16. useEffect를 사용하여 마운트/언마운트/업데이트시 할 작업 설정하기" .velopert
"React Hooks : useEffect() 함수" .xiubindev