useEffect()
1. ๊ฐ์
๋ฆฌ์กํธ์์ useState()
๊ณผ ํจ๊ป ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Hook์ useEffect()
์ด๋ค. useEffect()
๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋๋๋ง ๋ ๋๋ง๋ค ํน์ ์์
์ ์คํํ ์ ์๋๋ก ๋์์ ์ค๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ํด๋์คํ ์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋(componentDidMount, componentDidUpdate, compoenntWillUnMount)์ ๊ฐ์ ๊ธฐ๋ฅ์ด๋ค.
2. useEffect() ์ฌ์ฉํ๊ธฐ
๊ธฐ๋ณธํํ useEffect(function, deps)
function: ์ํํ๊ณ ์ ํ๋ ์์
deps: ๋ฐฐ์ด ํํ์ด๋ฉฐ, ๋ฐฐ์ด ์์๋ ๊ฒ์ฌํ๊ณ ์ ํ๋ ํน์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฑฐ๋ ๋๋ ๋น ๋ฐฐ์ด์ด๋ค.
์๋๋ ๊ฐ๋จํ useEffect()
์ ์ฌ์ฉ์์์ด๋ค.
3. ๋ง์ดํธ
์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ํ๋ฌ์ ๋(๋ง์ดํธ ๋์์ ๋)๋ฅผ useEffect()
๋ก ๊ด๋ฆฌ๋ฅผ ํด๋ณด์.
deps ๋ฐฐ์ด์ ๋น์ฐ๊ฒ ๋๋ค๋ฉด, ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ํ๋ ๋์๋ง useEffect()
์ ๋ฑ๋กํ ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค.
์๋์ ์ฝ๋๋ฅผ ์์๋ก ์ดํด๋ณด์.
์์ ์ปดํฌ๋ํธ๋ฅผ ์ดํด๋ณด์. Test์ปดํฌ๋ํธ์์ ์ซ์ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ก์ด ์ซ์์ด ์๊ธฐ๊ณ numberArr
์ ์๋ก์ด ์ซ์๊ฐ ๋ด๊ธฐ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ numberArr
์ ๋ฐ๋ผ Number
์ปดํฌ๋ํธ๊ฐ ์๊ธฐ๊ฒ ๋๋ค.
Number์ปดํฌ๋ํธ์์๋ ์ปดํฌ๋ํธ๊ฐ ์์ฑ(๋ง์ดํธ)๋ ๋ useEffect()
๋ก ์ธํด ์ฝ์์ด ์ฐํ๊ฒ ๋๋ค. ์๋๋ ์ซ์๊ฐ ์์ฑ๋ ๋ ๋ณด์ฌ์ง๋ ํ๋ฉด๊ณผ ์ฝ์์ด๋ค.
4. ์ธ๋ง์ดํธ
์ด๋ฒ์๋ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋(์ธ๋ง์ดํธ ๋์์ ๋)๋ฅผ useEffect()
๋ก ๊ด๋ฆฌ๋ฅผ ํด๋ณด์.
useEffect()
์์ ํจ์๋ฅผ ๋ฐํํ ์ ์๋๋ฐ ์ด ํจ์๋ฅผ cleanup
ํจ์๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์ด cleanup
ํจ์๊ฐ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ผ์ง ๋ ํธ์ถ๋๋ค. ์ฝ๊ฒ ๋งํด cleanup
ํจ์๊ฐ useEffect()
์ ๋ํ ๋ท์ ๋ฆฌ๋ฅผ ํด์ค๋ค๊ณ ํ ์ ์๋ค.
cleanup
ํจ์๋ฅผ ์ฌ์ฉํด๋ณด์. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์์ Test์ปดํฌ๋ํธ์ ์ถ๊ฐ์ ์ธ ์ฝ๋(Test์ปดํฌ๋ํธ๋ฅผ ์ญ์ ํ๊ธฐ ์ํ ์ฝ๋, cleanup
ํจ์ ์ฝ๋)๊ฐ ํ์ํ๋ค. ์๋์ ๊ฐ์ด ์์ฑํด๋ณด์.
5. deps ์ ํน์ ๊ฐ ๋ฃ๊ธฐ
deps์ ํน์ ๊ฐ์ ๋ฃ๊ฒ ๋๋ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ง์ดํธ ๋ ๋ useEffect()
๊ฐ ํธ์ถ๋๊ณ deps์ ๋ฃ์ ํน์ ๊ฐ์ด ๋ฐ๋ ๋์๋ useEffect()
๊ฐ ํธ์ถ๋๋ค. ์๋์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ deps์ ํน์ ๊ฐ์ด ์์ ๋์ ์์ ๋์ useEffect()
๋ฅผ ๋น๊ตํด๋ณด์ง.
์์ ์ฝ๋์์ useEffect()
๊ฐ ๋ ๋ฒ ๋ณด์ธ๋ค. ๋ณด์ด๋ ์์๋๋ก 1๋ฒ useEffect()
, 2๋ฒ useEffect()
๋ผ๊ณ ๋ถ๋ฅด๊ฒ ๋ค.
1๋ฒ useEffect()
์ deps์ ํน์ ๊ฐ์ด ์์ ๋น ๋ฐฐ์ด์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฒ์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋ ๋๋ง ํธ์ถ์ด ๋๋ค.
2๋ฒ useEffect()
์ deps์๋ number
๊ฐ์ด ๋ค์ด๊ฐ์๋ค. number
์ ๊ฐ์ ์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๋ ๋ง๋ค ๋ฐ๋๊ธฐ ๋๋ฌธ์ 2๋ฒ useEffect()
๋ ์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ์ ๋๋ฌ number
๊ฐ์ด ๋ฐ๋ ๋ ๋ ๋ง๋ค ํธ์ถ์ด ๋๋ค.
์๋๋ ์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๋ ๋ง๋ค ํธ์ถ๋๋ useEffect()
์ ๊ฒฐ๊ณผ ์ฌ์ง์ด๋ค.
6. deps ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ตํ๊ธฐ
useEffect()
์ deps์ ์์ฒด๋ฅผ ์๋ตํ๊ฒ ๋๋ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ๋ ๋ฟ๋ง ์๋๋ผ ๋ฆฌ๋๋๋ง ๋ ๋๋ง๋ค useEffect()
๊ฐ ํธ์ถ๋๋ค.
์์ ์ฝ๋์์ ์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๋ ๋ง๋ค number
๊ฐ์ด ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ๊ฐ ๊ณ์ ๋ฆฌ๋๋๋ง ๋๋ค. ๊ทธ๋ฆฌ๊ณ useEffect()
๋ฅผ ๋ณด๋ฉด deps๊ฐ ์์ ํ ์๋ต๋์ด ์๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง ๋ ๋ ๋ง๋ค useEffect()
๊ฐ ํธ์ถ๋๋ค. ๋ค์ ๋งํด ํ๋ฆ์ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ๋ค.
์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ์ ๋๋ฅธ๋ค.
number
๊ฐ์ด ๋ฐ๋๋ค.์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง ๋๋ค.
useEffect()
๊ฐ ํธ์ถ๋๋ค.
์๋๋ ์ซ์ ๋ฐ๊พธ๊ธฐ ๋ฒํผ๋ฅผ ๋๋ฅผ ๋ ๋ง๋ค useEffect()
๊ฐ ํธ์ถ๋์ด ๊ณ์ ์ฐํ๋ ์ฝ์์ ์ฌ์ง์ด๋ค.
7. Conclusion
useEffect()
๋ฅผ ์์ฃผ ์ฌ์ฉํ์๋ค. ํ์ง๋ง lifecycle๊ณผ๋ ์ฐ๊ด์ ์ง์ด ์๊ฐ์ ํ์ง ์์๋ค. ์ด๋ฒ ๊ณต๋ถ๋ฅผ ํตํด lifecycle๊ณผ ์ฐ๊ด์ ์ง์ด ์ดํดํ๋๋ก ๋ ธ๋ ฅ์ ํ๊ณ , cleanupํจ์์ ๋ํด์๋ ๋ง์ฐํ๊ฒ ์๊ณ ์์๋๋ฐ ์ด๋จ ๋ ์ฌ์ฉํ์ง๋ ์ ์ ์๋ ๊ณต๋ถ์๋ค.
์ฐธ๊ณ
[React] ๋ฆฌ์กํธ Hooks : useEffect() ํจ์ ์ฌ์ฉ๋ฒ 16. useEffect๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ดํธ/์ธ๋ง์ดํธ/์ ๋ฐ์ดํธ์ ํ ์์ ์ค์ ํ๊ธฐ
๐ 2022-07-31
Last updated