본문 바로가기

TIL

useEffect

useEffect 는 리액트 컴포넌트가 렌더링 된 이후마다 특정 작업을 수행하도록 설정할 수 있는 Hook.

컴포넌트가 화면에 처음 보여지거나, 사라질 때를 제어할 수 있다. (컴포넌트 렌더링 프로세스 관리)

 

 

■  특징

  • useEffect는 useEffect가 속한 컴포넌트가 최초 렌더링 된 이후 실행된다.
  • ➜  컴포넌트의 상태가 바뀌어서 업데이트 되기 전과 될 때에도 실행되고 리렌더링 될때에도 실행된다.
  • 2개의 인자를 받는다.
  • ➜  첫번째 인자 : 콜백함수
  • ➜  두번째 인자 : 의존성 배열(어떤 state가 변경되면 실행할 지 정해준다)

 

■  렌더링 순서

  • 최초 렌더링  ➜  useEffect 내부 함수  ➜  set함수 실행  ➜  state 변경  ➜  리렌더링

 

■  사용방법

import { useEffect } from 'react';

const App = () => {
  useEffect(() => {
// 여기코드는 모든 렌더링 후에 실행됨
    (컴포넌트가 나타났을 때(mount) 실행할 함수)

// clean up
  	return () => {
    (컴포넌트가 사라졌을 때(unmount) 실행할 함수)
   }
  }, [의존성배열]);
  
 return <div />;
};

 

 

■  의존성 배열 : useEffect 의 동작 trigger

 

 의존성 배열에 값이 있는 경우

배열에 넣은 값이 바뀔 때만 useEffect 가 실행된다.

주로 state 변경에 사용

 

 의존성 배열이 빈 배열일 경우

컴포넌트가 렌더링 된 후 단 한번만 실행된다.

주로 fetch 에 사용

 

* 의존성 배열이 없는 경우

useEffect를 쓰는 이유가 없음. 의존성 배열 없이는 useEffect 사용하지 말 것!

 

■  clean up

컴포넌트가 사라졌을 때 동작하는 함수

useEffect 안에서 return 을 해주고 실행되길 원하는 함수를 넣어준다.

 

 

■  mount / unmount

 mount(생성) : 함수형컴포넌트가 연결됐을 때(사용중)

 unmount(제거) : 함수형 컴포넌트가 사라질 때(사용되지않을 때)

 

 

 

 

참고

https://ko.react.dev/learn/synchronizing-with-effects

https://ko.react.dev/reference/react/useEffect

'TIL' 카테고리의 다른 글

RTK, RRD, Supabase  (0) 2024.08.20
타임어택 과제 보완  (0) 2024.08.19
React key 중복 오류 발생  (0) 2024.08.16
개인과제 - 올림픽 메달 트래커 (240808~240814)  (0) 2024.08.15
React github page 배포 오류 해결  (0) 2024.08.14