[React] mount시 실행되는 useEffect

2021. 8. 1. 13:42·React/React Basic

함수형 컴포넌트에서는 플러터의 initState, dispose와 같이

컴포넌트가 생성(mount)되거나 해제(unmount)될 때의 호출을 useEffect를 사용해 구현한다.

 

useEffect는 deps 값을 통해 어떤 경우에 동작할 것인지 정할 수 있다.

 

1. 컴포넌트가 mount 되는 최초 1회

  useEffect(() => {
    console.log("init");
    return () => {
      console.log("dispose");
    };
  }, []);

return을 통해 unmount가 될 때 동작하는 dispose를 구현할 수 있다.

맨 뒤의 deps에 빈 배열을 넣어주면 최초 1회만 동작한다.

 

2. 특정 값이 바뀌는 경우 & mount시

  useEffect(() => {
    console.log('user 값 설정');
    return () => {
      console.log('user 변경 전');
    };
  }, [user]);

값이 설정되기 전과 후에 동작한다.

만약 mount시에 호출하고 싶지 않다면 bool 타입의 ref를 사용해 mount 여부를 걸러내보자.

 

3. 리렌더링 시 호출

  useEffect(() => {
    console.log('리 렌더링');
  });

매 렌더링 마다 호출되며 mount시에도 호출 된다.

 

주의할 점

useEffect 내에서 사용하는 state, props가 있다면 deps에 넣어줘야하는 것이 규칙이다.

그래야만 useEffect에서 최신 값을 사용할 수 있기 때문이다.

그리고, 당연히 여러 개의 useEffect를 하나의 컴포넌트에서 사용할 수 있다.

저작자표시 비영리 변경금지 (새창열림)

'React > React Basic' 카테고리의 다른 글

[React] 불필요한 렌더링 최적화하기  (2) 2021.08.01
[React] useMemo와 useCallback  (0) 2021.08.01
[React] List를 컴포넌트로 렌더링  (0) 2021.07.31
[리액트] Ref에 관하여 (useRef)  (0) 2021.07.31
[React] 컴포넌트간 props 전달  (2) 2021.07.25
'React/React Basic' 카테고리의 다른 글
  • [React] 불필요한 렌더링 최적화하기
  • [React] useMemo와 useCallback
  • [React] List를 컴포넌트로 렌더링
  • [리액트] Ref에 관하여 (useRef)
코딩으로세계정복
코딩으로세계정복
Connecting the dots
  • 코딩으로세계정복
    코딩으로 세계정복
    코딩으로세계정복
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    useState
    map
    프로그래머스
    파이썬
    JavaScript
    github
    Redux
    웹
    useTranslation
    DART
    리액트
    CSS
    react
    flutter web
    useRef
    알고리즘
    자바스크립트
    탐욕법
    JSON
    Lingory
    Firebase
    TypeScript
    플러터 웹
    HTML
    Python
    링고리
    Flutter
    포트폴리오
    플러터
    DP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩으로세계정복
[React] mount시 실행되는 useEffect
상단으로

티스토리툴바