React Hook(useEffect)

박재민·2021년 4월 8일
0

[useEffect]

  • useEffect를 사용하면 컴포넌트를 화면에 그린 후 실행될 함수를 정의

[사용방법]

useEffect는 2개의 매개변수를 가지는데 첫 번째는 컴포넌트 레이아웃 배치와 화면 그리기가 끝난 후 실행될 함수, 두 번째는 의존성 배열

  • 첫 번째 인자의 내부는 effect 함수, 첫 번째 인자가 반환하는 함수는 clean-up 함수라고 부른다.
  • useEffect는 첫 번째 인자로 주어진 함수를 실행하기 전에 의존성 배열의 원소가 변경됐는지 확인

  • 비교는 useState와 동일하게 Object.is 메소드를 사용하고 만약 하나도 변경되지 않았으면 렌더링 시점에선 useEffect를 실행하지 않음

  • 하지만 의존성 배열의 원소가 하나라도 변경됐으면 useEffect를 실행

  • 의존성 배열을 빈 배열로 설정하면 useEffect의 함수는 컴포넌트를 마운트하는 시점과 언마운트하는 시점에만 실행(예)List - 목록 렌더링)

  • useEffect가 함수 컴포넌트 생애주기에 관여하는 부분은 위 그림과 같고, useEffect는 항상 DOM 상태 변경과 레이아웃 배치, 화면 그리기가 모두 완료된 후 실행
  • 컴포넌트는 기본적으로 마운트->업데이트(반복)->언마운트의 생애주기를 가진다
  • 마운트 상태 : 컴포넌트 구조가 HTML DOM에 존재하는 상태(화면에 보이는 상태), 컴포넌트 DOM 구조나 내용이 변경될 때마다 업데이트 과정
  • 언마운트 상태 : 컴포넌트 구조가 HTML DOM에서 제거된 상태(화면에 안 보이는 상태)를 의미.

[effect 함수와 clean-up 함수]

  • React 컴포넌트는 매 render 함수를 실행하는 과정에서 그 시점의 컴포넌트 props와 상태를 기반으로 컴포넌트 내부 변수와 함수를 다시 정의하고 계산 -> 이 때 useEffect의 첫 번째 인수도 계산되어 위 그림에서 표현된 시점에 실행
profile
동료를 소중히 생각하는 개발자입니다.

0개의 댓글