[๋ฆฌ์•กํŠธ] use Effect

์ž„์Šน๋ฏผยท2022๋…„ 8์›” 11์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
5/14
post-thumbnail

๐Ÿ’ก useEffect๋Š” ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง, ์˜์กด์„ฑ ๋ฐฐ์—ด ๋ณ€ํ™”์‹œ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” hook์ด๋‹ค.

use Effect์˜ ๋ฌธ์ œ์ 

ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ๋ณธ๋ฌธ์—์„œ ๋ฐ”๋กœ side Effect๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด 2๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.

  • side Effect๊ฐ€ ๋ Œ๋”๋ง์„ ๋ธ”๋ฝํ‚นํ•œ๋‹ค.
    ๋งŒ์•ฝ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ ๋  ๋•Œ ๊นŒ์ง€ jsx๋ฅผ returnํ•˜๊ธฐ ์ „ ๊นŒ์ง€ ๋ Œ๋”๋ง ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋žœ๋”๋ง๋งˆ๋‹ค side Effect๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค.
    ํŠน์ • side Effect๋Š” ๋งค๋ฒˆ ์ˆ˜ํ–‰๋  ํ•„์š”๊ฐ€ ์—†๋‹ค.

data fetching์ฒ˜๋Ÿผ ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” side Effect๊ฐ€ ์ž‘์€ ๊ธฐ๋Šฅ ํ•˜๋‚˜์— ๋งค๋ฒˆ ๋ฆฌ๋ Œ๋”๋ง(ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„  ๋‹ค์‹œ ํ˜ธ์ถœ) ๋œ ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค.

์œ„์˜ 2๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” useEffect ๋ผ๋Š” hook์ด ์žˆ๋‹ค.

useEffect ์‚ฌ์šฉ๋ฒ•

๋ Œ๋”๋ง์„ ๋ธ”๋ฝํ‚น ํ•ด๊ฒฐ

  1. use Effect๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด import๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
  2. useEffect๋Š” ํ•จ์ˆ˜์ด๋ฉฐ ์ธ์ž๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค.
  3. ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ  ๋ Œ๋”๋ง์ด ๋๋‚˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ side Effect์˜ ๋ฌธ์ œ์ ์ธ ๋ Œ๋”๋ง์„ ๋ธ”๋ฝํ‚น ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค.

๋žœ๋”๋ง๋งˆ๋‹ค side Effect ์ˆ˜ํ–‰ ํ•ด๊ฒฐ

  • ๋ Œ๋”๋ง ๋งˆ๋‹ค side Effect๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค
  1. useEffect๋Š” ์ธ์ž๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜์™€ ์˜์กด์„ฑ ๋ฐฐ์—ด์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  2. useEffect๋Š” ์šฐ์„  ์˜์กด์„ฑ ๋ฐฐ์—ด์˜ ๊ฐ’๊ณผ ์ „ ๋ Œ๋”๋ง์ด ๋™์ผํ•œ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
  3. ๊ฒ€์‚ฌ์— ํ†ต๊ณผํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ ์ฒ˜์Œ์—” ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋œ๋‹ค.
useEffect(์ฝœ๋ฐฑํ•จ์ˆ˜, [์˜์กด์„ฑ ๋ฐฐ์—ด]) // ์˜์กด์„ฑ ๋ฐฐ์—ด์ด๊ธฐ์— ๋ฐฐ์—ด์•ˆ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

์˜์กด์„ฑ ๋ฐฐ์—ด์ด ๋ณ€ํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋ณ€ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.ใ…

useEffect(์ฝœ๋ฐฑํ•จ์ˆ˜, [A, B]) 

์œ„์ฒ˜๋Ÿผ ์˜์กด์„ฑ ๋ฐฐ์—ด์— ๋‘๊ฐ€์ง€ ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋‘๊ฐ€์ง€ ๊ฐ’์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ณ€ํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋œ๋‹ค.
์ฒ˜์Œ๋งŒ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๊ทธ์ดํ›„์—” ์‹คํ–‰๋˜์งˆ ์•Š๊ธฐ๋ฅผ ์›ํ•˜๋ฉด ๋ฐฐ์—ด์— ์•„๋ฌด ๊ฐ’๋„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๋œ๋‹ค.

๋ Œ๋”๋ง ๊ณผ์ •์‹œ useEffect

์•„๋ž˜์˜ ์ˆœ์„œ๋ฅผ ํ†ตํ•ด useEffect๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  1. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋œ๋‹ค.(์ฒซ ๋ Œ๋”๋ง์„ mount๋ผ๊ณ  ํ•œ๋‹ค)
  2. useEffect์˜ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋œ๋‹ค.(sideEffect)
  3. state, props๊ฐ€ ๋ณ€๊ฒฝ ๋˜๋ฉด ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค.(update)
  4. ์˜์กด์„ฑ ๋ฐฐ์—ด์„ ๊ฒ€์‚ฌํ•œ๋‹ค.
  5. stateํ˜น์€ props๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด 3~4๋ฒˆ์ด ๋ฐ˜๋ณต ๋œ๋‹ค.
  6. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•„์š” ์—†์–ด์ง€๋ฉด ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง„๋‹ค.(unmount)

๋งˆ์น˜๋ฉฐ

useEffect๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•  ๋•Œ ๋‹ค๋ฅธ ํ•จ์ˆ˜๊นŒ์ง€ ๋™์ž‘ํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ•ด ํšจ์œจ์„ฑ์„ ๋†’ํž ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋”์ด์ƒ ํฐ ํฌ๊ธฐ์˜ sideEffect๋กœ jsx ๋ Œ๋”๋ง์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
์•„์ง ์ •ํ™•ํžˆ ์–ธ์ œ ์จ์•ผํ• ์ง€๋Š” ๊ฐ์ด ์•ˆ์˜ค์ง€๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ์˜ค๋ฉด ๊ผญ ์จ๋ด์•ผ๊ฒ ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€