[React.js] Hooks - useEffect


useEffect

Hooks API Reference โ€“ React

useEffect๋Š” React Hooks API์˜ ์ผ์ข…์œผ๋กœ,ย  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Hook์ด๋‹ค.

1.ย ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ๋œ REST API ๋ฐ์ดํ„ฐ๋ฅผ ํŒจ์น˜

2.ย props, state ๋“ฑ ์ƒํƒœ๊ฐ’์˜ ๋ณ€๋™์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ

3.ย Timers(setTimeout, setInterval) ์„ ์šด์šฉํ•˜๊ธฐ ์œ„ํ•จ

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

useEffect(callbackย function, [dependencyย array])

1) Callback function

useEffect์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž์ด์žย effect ํ•จ์ˆ˜๋ผ๊ณ ๋„ ์นญํ•œ๋‹ค. ๋งคย ๋ Œ๋”๋ง ์‹œ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž‘์—…์„ ์ฝœ๋ฐฑํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค.

2) Dependency Array

useEffect์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž์ด๋‹ค. deps๋Š” ํ•„์ˆ˜์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ƒ๋žตํ•ด๋„ ๋˜๋‚˜, ์ดย deps์˜ ๋ชจ์Šต์— ๋”ฐ๋ผ useEffect์˜ ์„ฑ์งˆ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

  • undefinedย : ๋ชจ๋“  ๋ Œ๋”๋ง, ๋ฆฌ๋ Œ๋”๋ง ์‹œ effect ํ•จ์ˆ˜ ์‹คํ–‰
  • [ ] (๋นˆ ๋ฐฐ์—ด)ย : ์ตœ์ดˆ(๋งˆ์šดํŠธ)์—๋งŒ effect ํ•จ์ˆ˜ ์‹คํ–‰
  • [variable]ย : deps ๋ฐฐ์—ด ๋‚ด ๊ฐ’๋“ค์ด ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ์—๋„ effect ํ•จ์ˆ˜ ์‹คํ–‰. ํ†ต์ƒ effect ํ•จ์ˆ˜์™€ ๊ด€๋ จ๋œ ๊ฐ’์ด๋‚˜ ์ƒํƒœ(props, state) ํ•ด๋‹น.

3) Cleanup function

effect ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜(return)ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ cleanup ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š”,ย deps๊ฐ€ ๋น„์—ˆ๋‹ค๋ฉด ์–ธ๋งˆ์šดํŠธ ์‹œ, ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์˜ ์—…๋ฐ์ดํŠธ ์ง์ „์— ์‹คํ–‰๋œ๋‹ค.

๊ทธ๋ ‡๊ธฐ์—,ย ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์‚ญ์ œ๋‚˜ ํด๋กœ์ € ํ•ด์ œ ๋“ฑ์˜ ์—ญํ• ์„ ์ฃผ๋กœ ๋‹ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— Clean-up ์ด๋ผ๊ณ  ์นญํ•ด์ง€๊ณค ํ•œ๋‹ค.

ํšŒ๊ณ 

๋ Œ๋”๋ง ์ตœ์ ํ™” ๋“ฑ ๊ณ ๋ คํ•ด์•ผ ๋  ์กฐ๊ฑด์ด๋‚˜ ์ž‘๋™์›๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ๋ชจ๋ฅด๊ณ  ์ผ๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค.

useEffect๋ฅผ ๋‹จ์ˆœํ•œ ์—…๋ฐ์ดํŠธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด์˜จ ๋‚˜๋กœ์„œ๋Š”, ์ •๋ง ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋งŽ๋‹ค