Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발일지

useEffect 본문

Front-end/React

useEffect

YUDENG 2023. 5. 21. 22:27

컴포넌트가 렌더링 될 때마다 side-effect를 처리하는 작업을 해주는 Hook으로 최초에 한번은 무조건 동작한다.

useEffect는 실행 시 두 가지 인자를 받는다.

 

  1. 첫 번째 인자
    • 'useEffect'가 호출될 때마다 side-effect를 정의하는 함수
  2. 의존성 배열
    • side-effect의 상태 변화를 감지
    • 해당 배열에 포함된 요소의 상태가 변화되어야 side-effect를 실행시킨다.
    • 빈 배열이라면 최초에 한 번만 실행된다.
import React, { useEffect } from "react";

function Example(){
	useEffect (() => {
    	//side-effect를 실행하는 함수
        console.log('컴포넌트가 화면에 나타남');
        
        return() => {
        //clean-up 함수 (선택적)
        console.log('컴포넌트가 화면에서 사라짐');
        
        };
    }, [Dependency array]);
};

< 문제 >

1. useState를 사용해서 버튼 생성하기

+ 버튼 : 숫자를 1씩 증가 / - 버튼 : 숫자를 1씩 감소

2. 3의 배수가 되면 '짝' alert 띄우기

import React, { useState, useEffect } from "react";

export function Example() {
  const [count, setCount] = useState(0);

  const plus = () => {
    setCount(count + 1);
  };
  const minus = () => {
    setCount(count - 1);
  };

  useEffect(() => {
    if (count % 3 == 0 && count != 0) alert("짝");
  }, [count]);

  return (
    <div
      style={{
        height: "100vh",
        display: "flex",
        flexDirection: "column",
        justifyContent: "center",
        alignItems: "center",
      }}
    >
      <div style={{ fontSize: "30px" }}>You clicked {count} times</div>

      <div style={{ display: "flex", flexDirection: "row", margin: "20px" }}>
        <button style={{ margin: "5px" }} onClick={plus}>
          +
        </button>
        <button style={{ margin: "5px" }} onClick={minus}>
          -
        </button>
      </div>
    </div>
  );
}
728x90

'Front-end > React' 카테고리의 다른 글

JWT 기반 인증 시스템  (0) 2023.06.04
컴포넌트 내 데이터 전달  (0) 2023.06.01
Axios 사용법  (0) 2023.05.21
컴포넌트 export  (0) 2023.05.07
리액트 함수 선언  (0) 2023.05.04