ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

Language/React

[โš›๏ธ] useEffect, useRef

์ฑ„._. 2025. 1. 30. 21:00

useEffect

 

๐Ÿ“useEffect์˜ ํŠน์ง•

  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋œ ์ดํ›„๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” hook (์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ, ์‚ฌ๋ผ์งˆ ๋•Œ)
  • useEffect ์ƒ์„ฑ ํ›„, Import ํ•„์ˆ˜
  • state๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋ฆฌ-๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์„œ useEffect๊ฐ€ ๊ณ„์† ์‹คํ–‰๋จ
    =>
    ์˜์กด์„ฑ ๋ฐฐ์—ด๋กœ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ“์˜์กด์„ฑ ๋ฐฐ์—ด

  •  ์ด ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๊ทธ ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งŒ useEffect๋ฅผ ์‹คํ–‰์‹œํ‚ด
  • Trigger : useEffect์˜ ๋™์ž‘์„ ์ด๋Œ์–ด๋‚ด๋Š” ์–ด๋– ํ•œ ๋ณ€์ˆ˜ (๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’)
  • ์˜์กด์„ฑ ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ : ์ตœ์ดˆ ๋ Œ๋”๋ง ์ดํ›„ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰, ๊ทธ ์ดํ›„์—๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋„ ์‹คํ–‰ X

 

๐Ÿ“clean up

  • useEffect์˜ return ๋ฌธ์— ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜
  • ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ, ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

๐Ÿ“์ปดํฌ๋„ŒํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด: Mount(์ƒ์„ฑ) / Update(์—…๋ฐ์ดํŠธ) / Unmount(์†Œ๋ฉธ)

 

 

 

useRef

 

๐Ÿ“ํŠน์ง•

  • state๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ๊ณผ ์ƒ๊ด€์—†์ด ์–ด๋–ค ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ
  • ๊ฐ’์„ ์œ ์ง€ํ•จ => ์ €์žฅ๊ณต๊ฐ„์˜ ์—ญํ•  (useState์™€์˜ ์ฐจ์ด : ๋ Œ๋”๋ง๊ณผ ์—ฐ๊ด€์ด ์—†์Œ)
  • useRef๋กœ ์„ ์–ธ๋œ ๊ฐ’์€ DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์—ญํ• 

 

๐Ÿ“์‚ฌ์šฉ ๋ฐฉ๋ฒ•

import { useRef } from "react";

function App() {
  const ref = useRef("์ดˆ๊ธฐ๊ฐ’");
  console.log("ref", ref);
  };

 

์ฝ˜์†”์— ์ฐํžˆ๋Š” ๊ฐ’:

  • ‘current’๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
  • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ : ref.current = ‘๋ฐ”๊พผ ๊ฐ’’ (current ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ”๊พธ๊ธฐ)
function App() {
  const ref = useRef("์ดˆ๊ธฐ๊ฐ’");
  console.log("ref 1", ref);

  ref.current = "๋ฐ”๊พผ ๊ฐ’";
  console.log("ref 1", ref);
};

 

์ด๋ ‡๊ฒŒ ์„ค์ •๋œ ref ๊ฐ’์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ Œ๋”๋ง ๋˜์–ด๋„ unmount ์ „๊นŒ์ง€ ๊ฐ’์„ ์œ ์ง€!

 

 

๐Ÿ“์˜ˆ์‹œ

  • ์ €์žฅ๊ณต๊ฐ„
    • state๋Š” ๋ฆฌ๋ Œ๋”๋ง์ด ๊ผญ ํ•„์š”ํ•œ ๊ฐ’์„ ๋‹ค๋ฃฐ ๋•Œ ์“ฐ๋ฉด ๋œ๋‹ค.
    • ref๋Š” ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ref๋กœ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์€ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์ €์žฅ๋˜๋Š” ์ค‘ / state๋กœ ๋ฆฌ๋ Œ๋”๋ง์„ ํ•  ๋•Œ ๊ทธ ๊ฐ’์ด ํ•œ ๋ฒˆ์— ๋ฐ˜์˜๋จ
  • DOM
    • ์ตœ์ดˆ ๋ Œ๋”๋ง ์‹œ ์ธํ’‹์— ํฌ์ปค์Šค ๋‘๊ธฐ(useEffct์™€ ํ•จ๊ฒŒ ์‚ฌ์šฉ)

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ