티스토리 뷰

부트캠프

React useEffect

mimi-latte 2022. 6. 14. 23:38

Hook이란 어떤 것일까?

  • 리액트 16.8 버전부터 Hook이 등장하며 상태 관리를 위해 클래스형 컴포넌트를 이용하여 상태 관리를 할 필요성이 없어졌다.
  • Hook은 함수형 컴포넌트에서 React state와 life-cycle을 연동할 수 있게 하는 함수이다.
  • Hook의 장점은 코드가 간결해져 가독성이 좋고, 클래스형 컴포넌트에서 문제가 되는 HOC헬(추후 조사예정)을 벗어 날 수 있다.
  • Hook에는 useState, useEffect 등의 함수가 포함되어 있으며 해당 포스트는 useState에 대해 소개할 것이다.
  • class형 컴포넌트와 Hook을 사용한 함수형 컴포넌트에서 각각 상태 관리에 대한 코드 작성을 했을 시 Hook을 사용한 코드가 보다 가독성이 좋음을 확인할 수 있다(출처 : https://studyingych.tistory.com/59).

 

useEffect()란?

  • React 컴포넌트가 렌더링 될 때마다 특정 작업(Sied effect)을 실행할 수 있도록 하는 리액트 Hook.
  • Side effect는 component가 렌더링 된 이후에 비동기로 처리되어야 하는 부수적인 효과들
  • React 컴포넌트는 생명 주기가 있는데 컴포넌트가 실행되거나 업데이트되거나 제거될 때, 특정한 이벤트들이 발생하는 과정이다.
  • class 컴포넌트 때는 라이프사이클이 컴포넌트에 중심이 맞춰져 있어서 클래스가 마운트 되려할 때(componentWillMount), 마운트 되고 나서(componentDidMount), 업데이트 되었을 때(componentDidUpdate), 언마운트(componentWillUnmount) 될 때 실행됐다.
  • 함수 컴포넌트에서는 특정 데이터에 대해서 라이프사이클이 진행된다. 데이터는 여러 개일 수 있으므로, 클래스 컴포넌트에서는 componentWillMount, componentDidMount, componentDidUpdate, componentWillUnmount를 컴포넌트 당 한 번씩만 사용했다면, useEffect는 데이터의 개수에 따라 여러 번 사용하게 됩니다.

 

 

 

useEffect()의 인자

  • 첫 번째 인자 : 함수. 해당 함수 내에서 side effect가 실행된다.
  • 해당 함수의 생성 시기는 컴포넌트 생성 후  처음 화면에 렌더링 될 때, 컴포넌트에 새로운 props가 전달되어 렌더링 될 때, 컴포넌트에 state가 바뀌며 렌더링 될 때이다.
  • 두 번째 인자 : 종속성 배열
  • 해당 배열은 조건을 담고 있으며 boolean형태가 아니라 어떤 값의 목록이 들어간다.
  • 해당 값의 변화가 있을 시 useEffect 함수가 실행된다.

 

useEffect()의 실행

  • 컴포넌트가 처음 생성되거나, props가 업데이트 되거나, state가 업데이트 될 때 실행
useEffect( () => {
  console.log('컴포넌트가 처음 생성 될 때 실행');
  console.log('props 업데이트 시 실행');
  console.log('state 업데이트 시 실행');
})
  • 컴포넌트가 처음 생성될 때만 함수 실행
useEffect( () => {
  console.log('컴포넌트가 처음 생성 될 때 실행');
}, [])
  • count가 업데이트 될 때마다 실행
useEffect( () => {
  console.log('count 값 업데이트 될 때마다 실행');
}, [count])

 

 

 

참고 사이트

https://cocoon1787.tistory.com/796

https://www.zerocho.com/category/React/post/579b5ec26958781500ed9955

https://www.zerocho.com/category/React/post/5f9a6ef507be1d0004347305

 

 

 

 

 

 

'부트캠프' 카테고리의 다른 글

section3 회고  (0) 2022.07.20
CORS(Cross Origin Resource Sharing)  (0) 2022.06.15
postman 으로 openAPI 데이터 조회하기  (0) 2022.06.13
웹 애플리케이션 아키텍처  (0) 2022.06.09
React useState  (0) 2022.06.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함