๐Ÿ—‚๏ธ React ์‚ผํ˜•์ œ Hook: useState, useEffect, useNavigate

๊น€์ˆ˜์ง„ยท2025๋…„ 5์›” 18์ผ

1๏ธโƒฃ useState โ€“ ์ƒํƒœ ๊ด€๋ฆฌ

์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ(์ƒํƒœ)๋ฅผ ์ €์žฅํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Hook
๋ฆฌ์•กํŠธ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•˜๋ฉด ํ™”๋ฉด์ด ์ž๋™์œผ๋กœ ๋ฐ”๋€Œ๋Š”๋ฐ, ๊ทธ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๊ฐ€ ๋ฐ”๋กœ useState์ด๋‹ค.

๊ตฌ์กฐ:

import { useState } from 'react';

const [state, setState] = useState(์ดˆ๊ธฐ๊ฐ’);

์ƒํƒœ๊ฐ’์„ ์„ ์–ธํ•˜๊ณ  setState()๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋œ๋‹ค.

2๏ธโƒฃ useEffect โ€“ ๋ณ€ํ™” ๋ฐ˜์‘

ํŠน์ • ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜
API ์š”์ฒญ, ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ ‘๊ทผ, ์ด๋ฒคํŠธ ๋“ฑ๋ก ๋“ฑ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ(side effect) ์ž‘์—…์„ ํ•œ๋‹ค.

๊ตฌ์กฐ:

import { useEffect } from 'react';

useEffect(() => {
  // ์‹คํ–‰ํ•  ์ฝ”๋“œ
}, [์˜์กด์„ฑ]);

์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋  ๋•Œ ํ˜น์€ ํŠน์ • ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์‹คํ–‰๋œ๋‹ค.

3๏ธโƒฃ useNavigate โ€“ ํŽ˜์ด์ง€ ์ด๋™

React Router์—์„œ ์ œ๊ณตํ•˜๋Š” Hook์œผ๋กœ, ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™ ๋‹ด๋‹น
SPA(Single Page Application)์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๊ตฌ์กฐ:

import { useNavigate } from 'react-router-dom';

const navigate = useNavigate();
navigate('/์ด๋™ํ• /๊ฒฝ๋กœ');

ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, React Router v6 ์ด์ƒ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“Œ ์ •๋ฆฌ

์ƒํƒœ๋Š” useState๋กœ ๊ธฐ์–ตํ•˜๊ณ 
๋ณ€ํ™”๋Š” useEffect๋กœ ๊ฐ์ง€ํ•˜๋ฉฐ
์ด๋™์€ useNavigate๋กœ ์‹คํ–‰ํ•œ๋‹ค.

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