useEffect 훅이란?
- 클래스 컴포넌트의 라이프사이클 함수와 비슷한 역할
- 한 컴포넌트 안에서 여러 번 정의하여 사용 가능
- useEffect 훅의 첫 번째 매개 변수에는 콜백 함수를 설정할 수 있으며, 이 콜백 함수는 useEffect 훅의 역할을 정의
- 두 번째 매개 변수에는 배열 전달
첫 번째 매개 변수로 함수를 반환하는 경우
useEffect(() => {
...
return () => {
...
};
});
- 클래스 컴포넌트의 componentWillUnmount 라이프사이클 함수와 같은 역할을 수행
- 즉, 컴포넌트가 화면에서 사라진 이후에 이 함수가 호출
- 라이브러리의 연동을 해제하거나 타이머를 해제하는 데에 주로 사용
두 번째 매개 변수로 빈 배열 전달하는 경우
useEffect(() => {
...
}, []);
- 클래스 컴포넌트의 componentDidMount 라이프사이클 함수와 같은 역할을 수행
- 즉, 컴포넌트가 처음 화면에 표시된 후 useEffect 훅이 한 번만 호출
두 번째 매개 변수인 배열을 생략하는 경우
useEffect(() => {
...
});
- 클래스 컴포넌트의 componentDidMount 라이프사이클 함수와 componentDidUpdate 라이프사이클 함수의 역할을 동시에 수행
- 즉, 컴포넌트가 처음 화면에 표시된 이후에도 한 번 실행되며, Props나 State의 변경에 의해 컴포넌트가 리렌더링되면 useEffect 훅 다시 실행
두 번째 매개 변수로 배열 전달하는 경우
useEffect(() => {
...
}, [posts]);
- 모든 Props와 State의 변경에 호출되는 componentDidUpdate 라이프사이클 함수와 달리, 전달된 변수가 변경될 때에만 이 함수가 호출 되도록 설정 가능
- 컴포넌트가 화면에 표시된 후 한 번 호출되며, posts 변수의 값에 변경 사항이 발생하면 이 변경 사항을 감지하고 useEffect 훅의 콜백 함수를 실행
참고
- 현장에서 바로 써먹는 리액트 with 타입스크립트
'FrontEnd' 카테고리의 다른 글
Vue3 - Composition API 사용법 (1) | 2023.11.12 |
---|---|
Vue2와 Vue3의 차이 (0) | 2023.11.09 |
NestJS - Query Params로 배열 받기(DTO 사용) (0) | 2023.08.10 |
NextJS - 클라이언트 사이드에서 쿠키 저장 (0) | 2023.08.06 |
Sass(Scss) (0) | 2023.01.06 |