React Hook ์ค์๋ useEffect๋ผ๋ Hook์ด ์กด์ฌํ๋ค. useEffect๋ ๋ฆฌ์กํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ํจ์๋ก์จ, useEffectํจ์๊ฐ ํฌํจ๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ง์ดํธ๋๊ฑฐ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๋, ๋๋ ์ ์ธ๋ ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ redux store์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์คํํ ๊ตฌ๋ฌธ๋ค์ ์ ์ํด๋์ ํจ์์ด๋ค.
0. useEffect import๋ฐฉ๋ฒ
import { useEffect } from 'react';
react๊ฐ ์ค์น๋์ด์์ผ๋ฉด ์ถ๊ฐ์ ์ผ๋ก ์ค์นํ ๊ฒ ์์ด ์์๊ฐ์ด ํ์ผ ์๋จ์ ์ถ๊ฐํ๋ฉด useEffect๋ฅผ ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
1. useEffect์ ๊ธฐ๋ณธ ํํ
useEffect(() => {
... // ์คํํ ๋ด์ฉ๋ค
});
useEffect์ ๊ธฐ๋ณธ ํํ๋ ์์ ๊ฐ๋ค. ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ์ ํด๋น useEffect ํจ์๊ฐ ์คํ๋๋ค.
2. ๋น์ด์๋ dependency ์ถ๊ฐ
useEffect(() => {
... // ์คํํ ๋ด์ฉ๋ค
}, []);
์์ ๊ฒฝ์ฐ๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์์ผ๋ก ๋ง์ดํธ๋์์ ๋ ์คํ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ง ์คํ๋๊ณ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์คํ๋์ง ์๊ธฐ์ ์ด๊ธฐ์ ํ ๋ฒ ์คํํ ์์ ๋ค์ด ํ์ํ ๋, ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
3. dependency ๊ฐ ์ถ๊ฐ
let something = 2;
useEffect(() => {
... // ์ซํํ ๋ด์ฉ
}, [something]);
useEffect์๋ [] ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฑฐ๋ ๋ค์ด๊ฐ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฅผ dependency ๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ dependency ํ๋ผ๋ฏธํฐ ๊ฐ์ ์์กดํ์ฌ useEffect ํจ์๊ฐ ์คํ๋ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
์์๊ฐ์ด dependency๊ฐ์ something์ด ๋ค์ด๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋, useEffect ํจ์๊ฐ ์คํ๋๋ค.
something์ด๋ผ๋ ๊ฐ์ ์์ฐจ์ ์ผ๋ก 3, 4, 5๋ก ์ด ์ธ ๋ฒ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด, ํด๋น useEffectํจ์๋ 3๋ฒ ์คํ๋๊ฒ ๋๋ค.
4. cleanup ํจ์
useEffect(() => {
... // ์คํํ ๋ด์ฉ
return () => {
... // cleanup
}
});
useEffect์๋ ํด๋น ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋ ๋ ์คํ๋๋ cleanupํจ์๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ค. cleanupํจ์๋ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋ ํธ์ถ๋๋ ๋ถ๋ถ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋์๋ฅผ ๋ฐฉ์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๊ฑฐ๋ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋, ์ํํ ์์ ๋ค์ ์ถ๊ฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- Mounting : ์ปดํฌ๋ํธ๊ฐ ์ต์ด๋ก ๋ํ๋ผ ๋๋ฅผ ๋ปํ๋ค.
- Rendering : ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ํ ์ปดํฌ๋ํธ๊ฐ ํธ์ถ ๋ ๋๋ฅผ ๋ปํ๋ค.
- UnMount : ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋๋ฅผ ๋ปํ๋ค.
- ์ฝ๊ฒ ์ ๋ฆฌํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ํ๋ ๋๋ฅผ ๋ง์ดํธ๋ผ ๋ถ๋ฅด๊ณ ๊ทธ ์ดํ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด ์ปดํฌ๋ํธ๊ฐ ๋ณ๊ฒฝ๋ ์ํ์์ ๋ํ๋ ๋๋ฅผ ๋ ๋๋ง์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
'Frontend๐ฑ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๊ณต๋ถ ์์ ๋ฐ ๊ธฐ์ด๊ณต๋ถ ์ถ์ฒ (0) | 2023.05.22 |
---|---|
[React] Request / response ์ดํดํ๊ธฐ (0) | 2023.04.23 |
[React] ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ Props (0) | 2023.04.20 |
[React] ๋ฆฌ์กํธ State๋? (0) | 2023.04.20 |
[React] ๋ฆฌ์กํธ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ (0) | 2023.04.20 |