๐ก useEffect๋ ์ปดํฌ๋ํธ ๋ ๋๋ง, ์์กด์ฑ ๋ฐฐ์ด ๋ณํ์ ํน์ ๋์์ ์ํํ๋ hook์ด๋ค.
ํจ์ ์ปดํฌ๋ํธ ๋ณธ๋ฌธ์์ ๋ฐ๋ก side Effect๊ฐ ๋ฐ์ํ๋ฉด 2๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
side Effect๊ฐ ๋ ๋๋ง์ ๋ธ๋ฝํนํ๋ค.
๋ง์ฝ ์๊ฐ์ด ๋ง์ด ์์๋๋ ํจ์๊ฐ ์๋ค๋ฉด ๊ทธ ํจ์์ ์คํ์ด ์ข
๋ฃ ๋ ๋ ๊น์ง jsx๋ฅผ returnํ๊ธฐ ์ ๊น์ง ๋ ๋๋ง ๋์ง ์๋๋ค.
๋๋๋ง๋ง๋ค side Effect๊ฐ ์ํ๋๋ค.
ํน์ side Effect๋ ๋งค๋ฒ ์ํ๋ ํ์๊ฐ ์๋ค.
data fetching์ฒ๋ผ ํน์ ์ํฉ์์๋ง ์ฌ์ฉ๋๋ side Effect๊ฐ ์์ ๊ธฐ๋ฅ ํ๋์ ๋งค๋ฒ ๋ฆฌ๋ ๋๋ง(ํจ์ ์ปดํฌ๋ํธ์์ ๋ค์ ํธ์ถ) ๋ ๋ค๋ฉด ๊ต์ฅํ ๋นํจ์จ์ ์ด๋ค.
์์ 2๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ useEffect ๋ผ๋ hook์ด ์๋ค.
๋ ๋๋ง์ ๋ธ๋ฝํน ํด๊ฒฐ
๋ฐ๋ผ์ side Effect์ ๋ฌธ์ ์ ์ธ ๋ ๋๋ง์ ๋ธ๋ฝํน ํ์ง ์๊ฒ ๋์๋ค.
๋๋๋ง๋ง๋ค side Effect ์ํ ํด๊ฒฐ
useEffect(์ฝ๋ฐฑํจ์, [์์กด์ฑ ๋ฐฐ์ด]) // ์์กด์ฑ ๋ฐฐ์ด์ด๊ธฐ์ ๋ฐฐ์ด์์ ๋ฃ์ด์ผ ํ๋ค.
์์กด์ฑ ๋ฐฐ์ด์ด ๋ณํ๋ฉด ํจ์๊ฐ ์คํ๋๊ณ ๋ณํ์ง ์์๋ค๋ฉด ์คํ๋์ง ์๋๋ค.ใ
useEffect(์ฝ๋ฐฑํจ์, [A, B])
์์ฒ๋ผ ์์กด์ฑ ๋ฐฐ์ด์ ๋๊ฐ์ง ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋ค. ๋๊ฐ์ง ๊ฐ์ค ํ๋๋ผ๋ ๋ณํ๋ฉด ํจ์๊ฐ ์คํ ๋๋ค.
์ฒ์๋ง ํจ์๊ฐ ์คํ๋๊ณ ๊ทธ์ดํ์ ์คํ๋์ง ์๊ธฐ๋ฅผ ์ํ๋ฉด ๋ฐฐ์ด์ ์๋ฌด ๊ฐ๋ ๋ฃ์ง ์์ผ๋ฉด ๋๋ค.
์๋์ ์์๋ฅผ ํตํด useEffect๊ฐ ๋ ๋๋ง ๋ ๋ ์ด๋ค ์์ผ๋ก ๋์ํ๋์ง ์ ์ ์๋ค.
useEffect๋ฅผ ํตํด ํน์ ๊ธฐ๋ฅ์ด ๋์ํ ๋ ๋ค๋ฅธ ํจ์๊น์ง ๋์ํ๋ ๋ถํ์ํ ๋ ๋๋ง์ ์ต์ํํด ํจ์จ์ฑ์ ๋ํ ์ ์๋ค. ๋ํ ๋์ด์ ํฐ ํฌ๊ธฐ์ sideEffect๋ก jsx ๋ ๋๋ง์ ๋ฐฉํดํ์ง ์์ ์ ์๋ค.
์์ง ์ ํํ ์ธ์ ์จ์ผํ ์ง๋ ๊ฐ์ด ์์ค์ง๋ง ์ฌ์ฉํ ์ ์๋ ์ํฉ์ด ์ค๋ฉด ๊ผญ ์จ๋ด์ผ๊ฒ ๋ค.