UseEffect
๋ถ์์ ํจ๊ณผ๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ
๋ ๋๋ง ์ฝ๋
,์ด๋ฒคํธ ํธ๋ค๋ฌ
๋ง์ผ๋ก ์ถฉ๋ถํ์ง ์์ ๋ํ๋ฉด์ด ์ ๋ฐ์ดํธ๋๊ณ ์ปค๋ฐ์ด ๋๋๋ฉด ํจ๊ณผ๊ฐ ์คํ
UseEffect ์ฌ์ฉ๋ฒ
์ฐธ์กฐ
setup: ํจ๊ณผ๋ฅผ ์ํํ๊ธฐ ์ํ ํจ์
dependencies: setup ๋ด๋ถ์์ ์ฐธ์กฐํ๊ณ ์๋ react์ ๊ฐ๋ค ๋ฐฐ์ด. ๋ฆฌ๋ ๋๋ง ์๋ง๋ค Object.is
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ข
์์ฑ๊ณผ ํ์ฌ ์ข
์์ฑ์ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด ํจ๊ณผ๋ฅผ ๊ฑด๋๋ด๋ค.
์ฌ์ฉ๋ฒ
useEffect
์ ์ธํ๊ธฐuseEffect๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋๋ง ํ์ ์คํ๋๋ค.
dependencies array
์ง์ ํ๊ธฐํ์ํ ๋์๋ง ์คํ๋๋๋ก ์ข ์์ฑ์ ์ง์ ํ๋ค.
cleanup function
์ถ๊ฐํ๊ธฐ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋ ๋ ์ฒ๋ฆฌํ ํจ์๋ฅผ ์ง์ ํ๋ค.
์ธ๋ถ์ ์ฐ๊ฒฐ ๋ฐ ์ฐ๊ฒฐํด์
socket ์ฐ๊ฒฐ๊ณผ ๊ฐ์ ์ธ๋ถ ์ฐ๊ฒฐ ํ ์ฐ๊ฒฐ ํด์
์ด๋ฒคํธ ๋ฑ๋ก ๋ฐ ์ ๊ฑฐ
eventListener๋ฅผ ๋ฑ๋กํ๊ณ ํด์
์์ฐ๋ ์ด๋ฒคํธ๋ ํญ์ ๊ทธ๋ ๊ทธ๋ ํด์ ํด์ผ ํ๋ค.
2์ฉ ์ฆ๊ฐํ๋ ์นด์ดํฐ
React์์ Strict๋ชจ๋๊ฐ ํ์ฑํ๋๋ฉด ๋ ๋ฒ์ฉ ๋ ๋๋ง๋๋ค.
์ ์ ํ ์ ๋ฆฌ ํจ์๋ฅผ ๋ง๋ค์ด ๋์ง ์์ผ๋ฉด setInterval์ด ๋ ๋ฒ ์คํ๋์ด 2์ฉ ์ฆ๊ฐํ๊ฒ ๋๋ค.
Strict ๋ชจ๋์ ๋ฌธ์ ๊ฐ ์๋๋ค. ์ปดํฌ๋ํธ๋ ์ฌ๋ฌ ๋ฒ ๋ ๋๋ง๋๋๋ผ๋ ๋ณต์๋ ฅ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
๋ฐ์ดํฐ fetchํ๊ธฐ
์ฑ ๋ก๋๋น ํ ๋ฒ ์คํํ๊ธฐ
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋์ ์ต์์(์ปดํฌ๋ํธ ๋ฐ)์๋ ๋ณ์(let,var)๋ฅผ ์ ์ธํ์ง ์๋๋ค.
ํ์ง๋ง ์ฑ์ ์ต์ด ๋ก๋ํ ๋ ํ ๋ฒ๋ง ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ
์ต์์ ๋ณ์๋ฅผ ์ ์ธํ์ฌ useEffect๊ฐ ์คํ๋์๋์ง ํ์ธํ ์ ์๋ค
๋ ๋ฆฝ์ ์ผ๋ก ์ํํ ์ ์๋ ํจ์๋ผ๋ฉด ์ปดํฌ๋ํธ ๋ฐ์์ ํธ์ถํ ์๋ ์๋ค.
ํ์ง๋ง ํด๋น ํจ์๊ฐ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด App ์ปดํฌ๋ํธ๋ฅผ ๋ก๋ํ๋ ๋ฐ ์ง์ฐ์ด ๋ฐ์ํ๊ฒ ๋๋ฏ๋ก ๋จ์ฉํด์๋ ์๋๋ค
๋ฌดํ๋ฃจํ
๋ ๋๋ง ํ useEffect ์์์ state ๋ณ๊ฒฝ -> ๋ฆฌ๋ ๋๋ง ->๋ ๋๋ง ํ useEffect ์์์ state ๋ณ๊ฒฝ ->... ๋ฌดํ ๋ฐ๋ณต
๋ถํ์ํ ํจ๊ณผ ์ ๊ฑฐ
์ธ๋ถ ์์คํ ๊ณผ์ ๋๊ธฐํ๊ฐ ํ์ํ์ง ์์ผ๋ฉด ํจ๊ณผ๊ฐ ํ์ํ ๊ฒ์ด ์๋ ์ ์๋ค.
๋ ๋๋ง์ ํ์ํ ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ
๋ ๋๋ง์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฐ ํจ๊ณผ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค. ex. ์ปดํฌ๋ํธ์ ์ต์์ ์์ค์์ ๋ณํํ๊ณ useMemo๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ์ ์ด์ ํ๋ฉด ๋๋ค
prop ๋ณ๊ฒฝ ์ ์ํ๋ฅผ ์ฌ์ค์ ํ๊ธฐ
prop ๊ฐ์ธ userId์ด ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค comment๋ฅผ ์ด๊ธฐํ๋ฅผ ํด์ผ ํ๋ค
useEffect๋ฅผ ์ฌ์ฉํ๋ฉด, ์ผ๋จ์ ์ค๋๋ ๊ฐ์ผ๋ก ๋ ๋๋ง ๋ ํ์
useEffect๋ฅผ ํตํด ๋ค์ ์๋ก์ด ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ๋ฆฌ๋ ๋๋ง๋๋ค
์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋ฃ๊ธฐ
์ข
์์ฑ ๋ฐฐ์ด
์ข ์์ฑ ๋ฐฐ์ด์ useEffect์ Effect ๋ด์์ ์ฌ์ฉํ๋(์์กดํ๋) react ๊ฐ(props์ state ๊ทธ๋ฆฌ๊ณ ์ด๋ค๋ก ๊ณ์ฐ๋ ๊ฐ๋ค)์ ๋ชฉ๋ก์ด๋ค
์๊ฐ์ ๋ฐ๋ผ ๋ณํ ์ ์๋ ๊ฐ๋ค์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํ๋ฅผ ๊ฐ์งํ๋ค
๋ฐ๋ผ์ ์ ์ญ ๋ณ์, ์์์ ๊ฐ์ react ๊ฐ์ด ์๋ ๋ฐ์ดํฐ๋ค์ ์ข ์์ฑ ๋ฐฐ์ด์ ๋ฃ์ง ์์๋ ๋๋ค.
๋น ์ข ์์ฑ ๋ฐฐ์ด์ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ๋ Effect๊ฐ ์คํ๋๊ณ , ๋ง์ดํธ ํด์ ๋ ๋ ์ ๋ฆฌ ํจ์๋ฅผ ์คํํ๋ค
๋ฉ์ถ๋ ์นด์ดํฐ
ํด๋น ์นด์ดํฐ
setInterval()
์ ์ฌ์ฉํ์ฌ 1์ด๋ง๋คincrement
๊ฐ์count
์ ๋ํ๋ ํ์ด๋จธ ์ปดํฌ๋ํธ์ด๋ค์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ์ ๋์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ฆ๊ฐ ๋๋ ๊ฐ์ ๋ฒํผ์ 1์ด์ ์ฌ๋ฌ ๋ฒ ํด๋ฆญํ๋ฉด ํ์ด๋จธ๊ฐ ๋ฉ์ถ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
๊ทธ ์ด์ ๋ useEffect์์
increment
๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋คsetInterval
์ด ๋ค์ ์์๋๊ธฐ ๋๋ฌธ์ด๋ค.
increment๊ฐ์ useRef๋ฅผ ์ฌ์ฉํ์ฌ setCount์ ๋๊ฒจ์ฃผ๋ฉด useEffect์ ์์กด์ฑ ๋ฐฐ์ด์ increment๋ฅผ ๋ฃ์ง ์์๋ ๋๋ค.
๋ฐ๋ผ์ increment ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ setInterval ํจ์๊ฐ ์ฌ์์๋์ง ์๋๋ค.
์ข
์์ฑ์ ์ ํ์ด ์๋๋ค
์ข ์์ฑ ๋ฐฐ์ด์ ์ข ์์ฑ์ ์ง์ ํ๋ ๊ฒ์ ์ ํ์ด ์๋ ํ์์ด๋ค.
useEffect์ Effect ํจ์ ๋ด๋ถ์ ๋ชจ๋ React ๊ฐ๋ค์ ์ข ์์ฑ ๋ฐฐ์ด์ ํฌํจ๋์ด์ผ ํ๋ค.
์ข ์์ฑ์ ๋ณ๊ฒฝํ๊ธฐ ํ๋ ค๋ฉด ์ฝ๋๋ฅผ ๋จผ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข๋ค
Last updated