목차
- useEffect 란?
- side effect 란?
- useEffect의 실행 시점
- 사용 예시
- 배열이 없는 useEffect
- 배열이 비어있는 useEffect
- 배열에 종속성이 있는 useEffect
1. useEffect 란?
- 첫 랜더링 시에 혹은 상태 변수, 오브젝트가 변경되면 업데이트를 해주는 함수
- 리액트에서 side effect를 관리하는 데 사용되는 hook (생명 주기를 관리하는 역할)
*side effect : 컴포넌트들이 어플리케이션에서 일어나는 다른 모든 외부와의 상호 작용하는 것
2. useEffect의 실행 시점
- App() 함수의 최초 실행될 때 (= 마운트)
- 상태 변수가 변경될 때
3. 사용 예시
1. 배열이 없는 useEffect
- 마운트될 때마다 Side Effect 실행
useEffect(()=>{
console.log('배열 없는 useEffect'); // 컴포넌트가 랜더링 될 때마다 실행되는 side effect
});
2. 배열이 비어있는 useEffect
- 컴포넌트가 마운트될 때 Side Effect가 한 번만 실행
useEffect(()=>{
console.log('빈 배열 useEffect'); // 컴포넌트가 랜더링 될 때마다 실행되는 side effect
}, []);
3. 배열에 종속성이 있는 useEffect
- 배열 내의 값이 변경될 때마다 Side Effect 실행
useEffect(()=>{
console.log('종속성 있는 useEffect'); // 종속성이 변경될 때마다 실행되는 Side Effect
}, [search]); // 리스트에 종속할 데이터(배열) 입력
import { useEffect, useState } from 'react';
import './App.css';
function App() {
const [data, setData] = useState(0);
const [search, setSearch] = useState(0);
const test = () =>{
let testData = 5;
setData(testData); // setData에 5를 할당
};
// 실행 시점 :
// (1) App() 함수의 최초 실행될 때 (= 마운트될 때)
// (1-1) 배열 없는 useEffect
// (1-2) 빈 배열 useEffect
// (1-3) 종속성 있는 useEffect
// (2) 상태 변수가 변경될 때
// * dependencyList에 등록되어 있어야 함 (= 리스트에 종속할 데이터(배열) 입력)
// * 의존리스트를 관리할 수 있다
// (1-1) 배열이 없는 useEffect
// - 마운트될 때마다 side effect 실행
useEffect(()=>{
console.log('배열 없는 useEffect'); // 컴포넌트가 랜더링 될 때마다 실행되는 side effect
});
// (1-2) 배열이 비어있는 useEffect
// - 컴포넌트가 마운트될 때 side effect가 한 번만 실행
useEffect(()=>{
console.log('빈 배열 useEffect'); // 컴포넌트가 랜더링 될 때마다 실행되는 side effect
}, []);
// (1-3) 배열에 종속성이 있는 useEffect
// - 배열 내의 값이 변경될 때마다 side effect 실행
useEffect(()=>{
console.log('종속성 있는 useEffect'); // 종속성이 변경될 때마다 실행되는 Side Effect
test();
}, [search]); // 리스트에 종속할 데이터(배열) 입력
return (
<div>
<button
onClick={()=>{
setSearch(2);
}}>검색하기
</button>
<h1>데이터 : {data}</h1>
<button
onClick={()=>{
setData(data + 1);
}}>더하기
</button>
</div>
);
}
export default App;
'IT 언어 > React' 카테고리의 다른 글
[React] 11. import에서 {}의 의미 (0) | 2024.07.15 |
---|---|
[React] 9. 배열 수정하기 (0) | 2024.06.14 |
[React] 8. 배열 (스프레드 연산자, concat, filter, slice, map) (0) | 2024.06.14 |
[React] 7. json-server, REST API (0) | 2024.05.06 |
[React] 6. props (map 사용방법) (0) | 2024.05.06 |