-
[Hooks]useEffectReact 2023. 6. 19. 10:15
1.LifeCycle
LifeCycle(생명주기)는 컴포넌트의 생성부터 변화,소멸까지의 과정을 나타낸다.
각각의 과정마다 특정한 작업을 수행 하여 원하는 동작을 수행할 수 있게해주는데,
이를 LifeCycle Method(생명주기 메서드)라고한다.
이러한 생명주기 메서드는 클래스형 컴포넌트에서만 사용 할 수 있다.
함수형 컴포넌트에서는 useEffect를 사용하여 각각의 컴포넌트 상태에 대해 작업을 할 수 있다.
2.useEffect 사용 하기
useEffect는 생명주기의 상태인 마운트,업데이트,언마운트 중에 특정 작업을 수행할 수 있게 해준다.
이름에서 알 수 있듯 side Effect를 처리하기 위한 Hook이다.
side Effect란 프로그램 실행과는 독립적으로 발생하는 외부적인 변화를 말한다.
API를 호출하거나 DOM 요소 제어,HTTP요청 등이 Side Effect라고 할 수 있다.
✨useEffect의 형태
useEffect(function,[])
function
실행할 작업을 작성한다.
[](의존성 배열 deps)
의존성 배열에 값이 없는 경우 매 렌더링마다 함수가 실행된다.
의존성 배열에 값이 들어간 경우 대상값이 업데이트될 때 함수가 실행된다.
✨useEffect 사용하기
1️⃣컴포넌트가 마운트되었을 때 실행
useEffect(() => { console.log("마운트될 때 실행."); }, []);
의존성 배열을 넣지 않으면 컴포넌트가 렌더링 될 때 마다 실행된다.
useEffect(() => { console.log("업데이트 될 때마다 실행."); });
2️⃣의존성 배열의 값이 변경될 때 실행
useEffect(()=>{ console.log("state가 업데이트 될 때 마다 실행") },[state])
현재 이 코드는 마운트가 되거나 state가 변경되면 실행되는 상태이다.
마운트때 실행되지 않고 state가 업데이트될 때만 실행시키고 싶다면,
const mounted = useRef(false); useEffect(()=>{ if(!mounted.current){ mounted.current = true; }else{ console.log("state가 업데이트 될 때마다 실행) } })
3️⃣언마운트 될 때 실행
useEffect(() => { console.log("마운트 될 때 실행") return () => { console.log("언마운트 될 때 실행."); }; });
이런식으로 함수를 반환 할 수 있다. 이것을 cleanup이라고 한다.
이것을 활용해 타이머를 설정하거나 해제하는 작업을 할 수 있다.
'React' 카테고리의 다른 글
[무한스크롤]IntersectionObserver (1) 2023.11.02 [Hooks]useReducer (0) 2023.06.19 [Redux기초]Redux 사용하기 (0) 2023.04.17 [Redux기초]리덕스 기초 개념 (0) 2023.04.13 [리액트 기초]context 사용법 (0) 2023.04.01