• useEffect의 배열 형태에 따른 실행 시점 차이
• 마운트, 언마운트, 리렌더링, 특정 상태 값 변화
• 의존성 배열이란?
함수형 컴포넌트란?
- state, lifeCycle 관련 기능 사용 불가능하다.
=> Hook을 통해 해결, 사용 가능
- 메모리 자원을 덜 사용한다.
- 컴포넌트 선언이 편하다.
useEffect()
리액트 컴포넌트가 렌더링 될 때마다 특정 기능을 수행하기 위한 리액트 훅으로,
의존성 배열의 값이 하나라도 변경될 때만 실행이 된다.
클래스 컴포넌트의 생명주기 함수인
componentDidMount(), componentDidUpdate(),componentWillUnMount()와 동일한 기능을 하나로 통합한다.
=> useEffect() 훅으로 생명주기 함수와 동일한 기능 수행 가능
useEffect(이펙트 함수, 의존성 배열);
의존성 배열?
이펙트 함수가 의존하고 있는 배열
=> 배열에 값을 넣으면 그 값이 바뀔 때만 useEffect를 실행한다.
1. 컴포넌트가 최초로 렌더링 될 때에만 조작
mount 시 단 한 번만 실행시키고 싶을 때 의존성 배열에 [](빈 배열)을 넣는다.
function Counter() {
const [counter, setCounter] = useState(1);
const [counter2, setCounter2] = useState(100);
useEffect(() => {
console.log("맨 처음 렌더링 될 때")
}, [])
2. 컴포넌트가 리렌더링 될 때 조작
컴포넌트가 업데이트될 때마다 실행시키고 싶을 때 의존성 배열을 생략한다.
function Counter() {
const [counter, setCounter] = useState(1);
const [counter2, setCounter2] = useState(100);
useEffect(() => {
console.log("리렌더링..!")
})
3. 특정 상태 값이 변할 때만 조작
특정 값을 넣으면 특정 상태 값이 변할 때만 실행된다.
아래 예시에선 counter 값일 변할 때, counter 2 값이 변할 때 각각 실행되는 중이다.
function Counter() {
const [counter, setCounter] = useState(1);
const [counter2, setCounter2] = useState(100);
useEffect(() => {
console.log("counter의 값이 변할 때")
}, [counter])
useEffect(() => {
console.log("counter2의 값이 변할 때")
}, [counter2])
4. 컴포넌트가 최종적으로 언마운드 될 때 조작
클린업 함수
=> 컴포넌트가 언마운트 될 때 실행
useEffect 안에서 return 을 해주고 실행되길 원하는 함수를 넣으면 된다.
아래 예시에선 unmount 될 때, console 값에 "컴포넌트 언마운트"가 뜬다.
function Counter() {
const [counter, setCounter] = useState(1);
const [counter2, setCounter2] = useState(100);
useEffect(() => {
return () => {
console.log("컴포넌트 언마운트")
}
}, [])
요약
- 의존성 배열에 [](빈 배열)을 넣으면 mount와 unmount 시에 한 번씩만 실행된다
- 의존성 배열 생략을 하면 컴포넌트가 업데이트될 때마다 실행된다.
- 의존성 배열에 특정 값을 넣으면 특정 상태 값이 변할 때만 실행된다.
'코딩 공부 (frontend) > react' 카테고리의 다른 글
SCSS의 중첩 규칙 이해 및 활용 (0) | 2024.08.05 |
---|---|
SCSS의 변수 사용법 (0) | 2024.08.05 |
클래스형 컴포넌트 생명주기 (0) | 2024.07.31 |
동물 정보 사이트 기술 블로그 작성하기 2 (0) | 2024.07.31 |
동물 정보 사이트 기술 블로그 작성하기 1 (0) | 2024.07.30 |