header-img
Info :
728x90

0. about UseEffect

UseEffect ํ•จ์ˆ˜
๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Hook

component์˜ mount ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ, ํ˜น์€ ๋‚ด์šฉ์ด update ๋˜์—ˆ์„ ๋•Œ, ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์‚ฌ์šฉ๋ฒ• ์€

import React, {useEffect} from 'react'

์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ

useEffect(()=>{ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•˜๊ณ  ์‹ถ์€ ์ผ },[๊ธฐ์ค€ ๊ฐ’])

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๊ฐ€์žฅ ์ฒ˜์Œ ๋ Œ๋”๋ง ๋  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š”
๊ธฐ์ค€๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” [] ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ๋นˆ ๋ฐฐ์—ด๋กœ ๋‘๋ฉด ๋œ๋‹ค.

1. ๋ฌธ์ œ ์ƒํ™ฉ

useEffect(()=>{},[])

์–˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ด๋ก ์ƒ ๋”ฑ! ํ•œ๋ฒˆ๋งŒ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋Š”๋ฐ..

์ด๋ ‡๊ฒŒ ๋‘๋ฒˆ ๋ถˆ๋Ÿฌ์™€์ง„๋‹ค.

๊ตณ์ด ์ƒ๊ด€์€ ์—†๊ธด ํ•˜์ง€๋งŒ ๊ถ๊ธˆํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์ฝ˜์†”์— ๋ฌด์–ธ๊ฐ€๋ฅผ ๋„ฃ์–ด์„œ ํ™•์ธํ•˜๋ฉด ์ฃผ๋ฃจ๋ฃจ๋ฃจ๋ฃฉ ์—„์ฒญ ๋ญ๊ฐ€ ๋งŽ์€ ๊ฑฐ ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๋ฒˆ ๋‚˜์˜ค๋‹ˆ๊นŒ.. ๋” ๊ถ๊ธˆํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

2. ๊ด€๋ จ ์ด๋ก 

์•Œ๋ฉด ๋Œ€๋ฐ• ๊ฐ„๋‹จํ•จ

REACT18 ์—์„œ๋Š” ํŽ˜์ด์ง€ ์ด๋™ ์ดํ›„ ๋‹ค์‹œ ๋Œ์•„์™”์„ ๋•Œ ์•ฑ์ด ๋ง๊ฐ€์ง€๋Š” ๋ถ€๋ถ„์ด ์—†๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ๋ชจ๋“œ(strict mode) ์—์„œ ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ 2๋ฒˆ ๋ Œ๋”๋ง ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

ํ•œ ๋งˆ๋””๋กœ ๋ Œ๋”๋ง์„ ์ง„ํ–‰ํ•˜๋ฉด
connecting  disconnecting  connecting ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋Š” ๋ง์ด๋‹ค.

ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜์ž.

์‚ด์•„์žˆ์œผ๋ฉด ์‚ด์•„์žˆ๋‹ค๊ณ  ๋งํ•ด๋‹ฌ๋ผ๊ณ  ํ•˜๊ณ , ์ฃฝ์—ˆ์œผ๋ฉด ์ฃฝ์—ˆ๋‹ค๊ณ  ๋งํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•œ๋‹ค.

์ง„์งœ connecting  disconnecting  connecting ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ทธ๋Ÿผ ๋‹น์—ฐ app.js ๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” strictMode ๋ฅผ ๋–ผ์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€...?

๋งž๋‹ค.

ํ•˜์ง€๋งŒ React.StrictMode ๋ฅผ ์ œ๊ฑฐํ•ด๋ฒ„๋ฆฌ๋ฉด 2๋ฒˆ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์€ ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒ ์ง€๋งŒ,
๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ React์—์„œ ์žก์•„์ฃผ์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์€ ๋‹น์—ฐ StrictMode ๋‚ด์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒŒ ๋งž๋‹ค..

๋ฐฐํฌํ•˜๊ฒŒ ๋˜๋ฉด StrictMode๋Š” ํ•ด์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ด€์—†์„ ๊ฒƒ ๊ฐ™๊ธด ํ•˜์ง€๋งŒ
๊ทธ๋ž˜๋„ ์ฐœ์ฐœํ•˜์ž”ํ•˜์š”

๋‘๋ฒˆ ๋ Œ๋”๋ง ๋˜๋Š” ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ...

๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” 2๋ฒˆ ๋ Œ๋”๋งrerendering ๋˜๋”๋ผ๋„ ์‚ฌ์šฉ์ž๋Š” ์ด๊ฑธ ๋ชจ๋ฅด๋ฉด ์ƒ๊ด€์ด ์—†๋Š”๊ฑฐ๋‹ค..

๊ทธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ Clean-Up ํ•จ์ˆ˜ ๋ฅผ ๊ผญ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹จ๋‹ค.

cleanup ํ•จ์ˆ˜ ๊ณต์‹ Document

useEffect() ํ•จ์ˆ˜์˜ return ๊ฐ’์œผ๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด,
component ๊ฐ€ unmount ๋˜๋Š” update ๋˜๊ธฐ ์ง์ „์— ์ด ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

๊ตฌ๊ตฌ์ ˆ์ ˆ ์ด์•ผ๊ธฐ๋Š” ๋งŽ์ง€๋งŒ ํฌ๊ฒŒ ์–ด๋ ค์šด ๊ฒƒ์€ ์•„๋‹ˆ๊ณ 

useEffect(()=>{ 
  ๊ฐ’์ด ๋งˆ์šดํŠธ ํ˜น์€ ๋ณ€๊ฒฝ ๋  ๋•Œ ๋งˆ๋‹ค ํ•˜๊ณ  ์‹ถ์€ ์ผ 

  return()=>{
  	๊ฐ’์ด unmount ๋  ๋•Œ ํ•˜๊ณ  ์‹ถ์€ ์ผ
  };
  
},[๊ธฐ์ค€ ๊ฐ’])

์ด๋ ‡๊ฒŒ ์จ์ฃผ๋ฉด ๋˜๋Š” ๊ฑฐ๋‹ค.

๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ๋Š” effect  cleanup  effect ์˜ ์ˆœ์„œ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
cleanup ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ๋Š” ๊ผญ ์ฑ™๊ธฐ๋„๋ก ํ•ด๋ณด์ž.

728x90
๋”๋ณด๊ธฐ
FRONTEND/React