ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React의 useEffect란?
    React 2022. 1. 9. 19:48

    React의 컴포넌트 생명주기에 역시 Vue처럼 라이프사이클 훅을 걸 수 있다.

     

    이전 React 문법의 라이프 사이클 훅 거는 방법이다.

     

    컴포넌트 클래스 안에서 메소드처럼 만들어주면되는데,

     

    역시 Vue랑 비슷하다.

     

    Vue와 비교해보자면 위는 mounted() 아래는 beforeDestroyed() 와 같은 기능을한다.

     

     

    어쨋든 현재는 function 컴포넌트 안에서 useEffect라는 함수 안에 콜백함수를 넣고 그 몸통에

     

    훅 로직을 써넣는다.

     

    기본적으로 useEffect는 mounted 시에 발동하는데,

     

    Vue와 다른점은 저것이 저 컴포넌트 안에 쓰이는 useState 변수 등이 바뀌어서

     

    재렌더링될 때에도 발동한다는것이다.

     

     

    또 useEffect는 한 컴포넌트 내에서 여러개 생성해 줄 수 있다.

     

    그러면 선언된 순서대로 잘 작동한다.

     

     

    여기서 문제는 useEffect 함수들이 컴포넌트들이 mounted될 때 무조건 한번 실행되지만,

     

    컴포넌트 안의 useState 변수들이 변경되어 재렌더링이 일어날 때 역시

     

    실행된다는것이다.

     

     

    그것을 막기위해 조건을 달아 특정 state 변수만 변경될 때 재렌더링되도록 만들어줄 수 있다.

     

    이렇게 useEffect 함수에 콜백함수 옆 두 번째 인자로

     

    배열 안에 state 변수들을 넣어줄 수 있다.

     

    그러면 그 state 변수들이 변경될 때만 해당 useEffect가 실행되도록 설계해줄 수 있다.

     

     

    그걸 응용해서 mounted될 때만 실행하고싶은 useEffect의 경우

     

    해당 배열 안에 아무것도 넣어주지않으면, 

     

    딱 그 컴포넌트가 mounted될 때만 실행되고 그 외 업데이트 시에는 반응하지않는다.

     

     

    마지막으로 useEffect 함수 안에 return을 써주면

     

    해당 컴포넌트가 종료되어 index.html에서 unmounted될 때 실행하고싶은 로직을

     

    함수로 넣어줄 수 있다.

     

    화살표 함수, 일반 함수 모두 가능하며

     

    해당 컴포넌트 종료 시 return문이 실행된다.

     

     

     

    정리

     

    1) 모든 useEffect 함수들은 소속 컴포넌트가 로드될 때 꼭 한번은 실행된다.

     

    2) 두 번째 인자에 useState 변수가 든 배열을 넣어 감지하고싶은 변수를 넣어줄 수 있다.

     

    3) 그렇지않으면 컴포넌트가 재렌더링 될 때 항상 발동한다.

     

    4) 배열 안에 아무것도 넣어주지않으면, 컴포넌트 로드 시에만 발동한다.

     

    5) return 문에는 컴포넌트 종료 시 실행할 로직을 함수로 넣는다.

     

    6) useEffect 함수는 한 컴포넌트 내 여러개 만들어줄 수 있다.

     

     

     

    'React' 카테고리의 다른 글

    React의 redux.  (0) 2022.01.11
    props 대신 쓸 수 있는 useContext.  (0) 2022.01.11
    React의 url parameter 사용.  (0) 2022.01.09
    React의 라우팅 방법.  (0) 2022.01.09
    React Bootstrap 설치법.  (0) 2022.01.09
Designed by Tistory.