본문 바로가기

React

useEffect

useEffect

  • useEffect란?
    : 어떤 컴포넌트가 Mount(화면에 첫 렌더링), Update(다시 렌더링), Unmount(화면에서 사라질 때) 코드를 실행시킬 수 있다.
  • useEffect는 (콜백함수, 배열)을 인자로 갖는다.
    : 콜백함수로 실행될 코드를 작성할 수 있다.
    : 배열은 dependency Array라고하며, 생략할 수 있다.
    : 배열이 생략되는 경우 Mount, Update, Unmount 상황 모두 코드가 실행된다.
    : 배열에 요소를 갖는 경우 Mount와 배열 요소의 값이 변할 때 코드가 실행된다.
    : useEffect ( ( ) => { 실행될 코드 } ) ; 
    : useEffect ( ( ) => { 실행될 코드 } , [ dependency Array] ) ;
  • import { useEffect } from 'react' ;로 사용을 알린다.

useEffect 선언

  • useEffect( ( ) => { } ) ;
    : 모든 렌더링에 실행된다.
  • useEffect( ( ) => { } , [ ] ) ;
    : 첫 렌더링에 실행된다.
  • useEffect( ( ) => { } , [ value ] ) ;
    : 첫 렌더링, value값이 바뀔 때 실행된다.

useEffect 살펴보기

  • useEffect를 다양한 방법으로 선언했다.
  • 어떤 상황에 동작하는지 콘솔창을 열어 확인할 수 있다.
import {useState} from 'react';
import {useEffect} from 'react';

function App () {
  const [num, setNum] = useState(0);
  let num2 = 0;

  function stateNum() {
    let newNum = num + 1;
    setNum(newNum);
    num2 = num2 + 1;
    console.log(num2);
  }

  // 렌더링 마다 실행된다.
  useEffect(() => { console.log("num : "+num+" > useEffect( ( ) => { } )") });
  
  // Mounting 되었을 때 실행된다.
  useEffect(() => { console.log("num : "+num+" > useEffect( ( ) => { } , [ ])")},[]);
  
  // num이 변경되었을 때 실행된다.
  useEffect(() => { console.log("num : "+num+" > useEffect( ( ) => { } , [ num ])")},[num]);
  
  // let으로 선언된 num2는 변경되어도 실행되지 않는다.
  useEffect(() => { console.log("num : "+num+" > useEffect( ( ) => { } , [ num2 ])")},[num2]);

  return (
      <>
        <button onClick={stateNum}>state Num</button>
        <p>{num}</p>
      </>
  );
}


export default App;

 

'React' 카테고리의 다른 글

useState  (0) 2022.06.14