1. 개요
useEffect를 사용해서 리액트의 생명주기를 확인할 수 있다.
리액트 컴포넌트의 생명주기는 총 3가지가 있다.
Mount : 화면에서 나타
Update : 리렌더
Unmount : 화면에서 사라짐
2. 사용 방법
useEffect도 마찬가지로 리액트의 기능이기 때문에 state와 useRef 같이 import 해준다.
import React , { useEffect } from "react";
useEffect의 기본 구성은 이렇게 나타난다.
useEffect(()=>{
// Callback함수
}, []); // dependency Array(의존성 배열)
// 이 배열안에 들어있는 값이 변화하면 콜백 함수가 실행됨
2-1 mount 할 때만 실행
컴포넌트가 화면에 처음 나타날 때를 mount한다라고 하는데, mount는 dependency Array가 빈배열일 때 실행된다.
import React, { useEffect, useState } from "react";
const Lifecycle = () =>{
const [count, setConut] = useState(0);
const [text, setText] = useState("");
useEffect(()=>{
console.log("Mount");
},[]);
return (
<div>
{count}
<button onClick={()=> setCount(count+1)}>+</button>
</div>
<div>
<input value={text} onChange={(e) => setText(e.target.value)} />
</div>
);
export default Lifecycle
이렇게 버튼을 클릭하면 숫자가 증가하기 때문에 컴포넌트가 리렌더링이 되는데도 불구하고 callback함수는 한번만 실행된다.
그 이유는 dependencyArray가 빈배열이기 때문이다.
2-2 update할때마다 실행
update 즉, 리렌더링이 될 때마다 실행시키기 위해서는 dependencyArray를 전달하지 않으면 된다.
useEffect(()=>{
console.log("Update");
});
이런식으로 배열을 전달하지 않으면 컴포넌트가 업데이트 할때마다 useEffect가 실행된다.
+ 추가로 사용자가 원하는 값이 변할 때만 callback함수가 실행되게 하기 위해서는 dependencyArray의 값이 변화하면 된다.
useEffect(()=>{
console.log("원하는 값 업데이트");
},[count]);
이런식으로 변하는 값을 넣어주면 이 값이 변할때마다 callback함수가 실행된다.
useEffect(()=>{
console.log("원하는 값 업데이트");
if(count>5){
alert("count가 5를 넘었습니다. 따라서 다시 1로 초기화합니다.");
setCount(1);
},[count]);
좀더 재미있게 변경을 하면 이런식으로 count가 5가 넘어가면 alert창을 띄우고 count를 1로 변경할 수 있다.
2-2 Unmount 할 때만 실행
useEffect(()=>{
console.log("mount 입니다."); // mount 할때
return () =>{
console.log("unmount 입니다."); // unmount 할때
};
}, []);
mount 할때에 추가로 return 함수를 생성해주면 return함수는 unmount할 때 실행된다.
'React' 카테고리의 다른 글
React - React Router 사용하기 (0) | 2023.05.19 |
---|---|
React - React.memo (0) | 2023.05.18 |
React - useMemo (0) | 2023.05.18 |
React - useRef란? (0) | 2023.05.17 |
React - State란? (0) | 2023.05.17 |