Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- MediaQuery
- googleicon
- maxwidth
- vscode git clone
- package.json
- XEIcon
- react npm install
- npm start
- git lab clone
- legacy-peer
- Git clone
- 정적객체
- 단어단위로떨어지기
- 글자들여쓰기
- node설치
- window 정책변경
- node 오류
- 이미지반응형
- 플러그인
- owlcarousel
- fontawesome
- 아이콘사용법
- slickslider
- minwidth
- 동적객체
- 의존성문제
- 그누보드반응형
- npm install 문제
- 웹아이콘
- npm install
Archives
- Today
- Total
어쩌다 알게 된 ƪ(•̃͡•̃͡ ƪ
🟦 [React] useEffect 개념 잡기 본문
728x90
📌 useEffect는 리액트 컴포넌트가 렌더링될 때 실행되는 코드(사이드 이펙트)를 관리하는 훅
=> 호출 시점 정해줌
✔️ 렌더링 이후 실행되는 코드
=> 컴포넌트가 처음 화면에 나타날 때 실행되는 코드 생성 가능
import React, { useEffect } from "react";
const Hello = () => {
useEffect(() => {
console.log("👋 컴포넌트가 화면에 나타남!");
}, []); // 의존성 배열이 빈 배열 -> 처음 1번만 실행
return <h1>안녕하세요!</h1>;
};
export default Hello;
결과:
- Hello 컴포넌트가 화면에 나타날 때 console.log("👋 컴포넌트가 화면에 나타남!")이 실행
- 빈 배열 []을 넣으면 처음 마운트될 때만 실행되고 이후에는 실행되지 않음.
✔️ 의존성 배열에 따라 실행되는 시점 조절 가능
=> 특정 값이 바뀔 때마다 실행
import React, { useState, useEffect } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`📢 count 값이 변경됨: ${count}`);
}, [count]); // count가 변경될 때마다 실행됨
return (
<div>
<p>현재 카운트: {count}</p>
<button onClick={() => setCount(count + 1)}>+1 증가</button>
</div>
);
};
export default Counter;
결과:
- 버튼을 누를 때마다 count 값이 증가하면서 useEffect가 실행됨.
- [count] → count 값이 바뀔 때만 실행
✔️ 컴포넌트가 언마운트될 때 정리(cleanup) 가능
=> ex) 타이머, 이벤트 리스너 등을 설정했다면 컴포넌트가 사라질 때 정리
import React, { useState, useEffect } from "react";
const Timer = () => {
useEffect(() => {
const interval = setInterval(() => {
console.log("⏰ 1초마다 실행됨");
}, 1000);
return () => {
clearInterval(interval); // 컴포넌트가 사라질 때 실행 (정리)
console.log("🧹 타이머 정리됨");
};
}, []);
return <h1>타이머 실행 중...</h1>;
};
const App = () => {
const [show, setShow] = useState(true);
return (
<div>
{show && <Timer />}
<button onClick={() => setShow(!show)}>타이머 ON/OFF</button>
</div>
);
};
export default App;
결과:
- 타이머가 시작되면 ⏰ 1초마다 실행됨이 계속 출력
- 버튼을 눌러 Timer 컴포넌트를 제거하면 "🧹 타이머 정리됨"이 출력
→ 타이머가 정리되어 더 이상 실행되지 않음!
useEffect 특징
| 실행 조건 | useEffect 코드 |
| 컴포넌트가 처음 나타날 때 실행 | useEffect( () => {...}, {} ) |
| 특정 값이 변경 될 때 실행 | useEffect( () => {...}, [value] ) |
| 컴포넌트가 사라질 때 정리 (cleanup) | return() => {...} |
728x90
'개발 > 🟦 React' 카테고리의 다른 글
| 🟦 [React] Chart.js 라이브러리 설치 o (0) | 2025.03.09 |
|---|---|
| 🟦 [React] Chart.js 라이브러리 설치 x , cdn 사용 (0) | 2025.03.09 |
| 🟦 [React] useRef 개념 잡기 (0) | 2025.03.09 |
| 🟦 [React] trim(), 기존 useState에 배열 추가하기 2 (1) | 2025.01.31 |
| 🟦 [React] trim(), 기존 useState에 배열 추가하기 (2) | 2025.01.31 |
Comments
