πŸ’‘ 핡심 μš”μ•½

React μ „μš© λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ ν”„λ ˆμž„μ›Œν¬ λ²”μš© μƒνƒœκ³„(TanStack)둜 ν™•μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€. v5λŠ” λ¬Έλ²•μ˜ 단일화(객체 ν˜•νƒœ κ°•μ œ), 콜백 μ˜΅μ…˜ 제거, 넀이밍 κ°œμ„ , Suspense μ „μš© ν›… μΆ”κ°€λ₯Ό 톡해 νƒ€μž…μŠ€ν¬λ¦½νŠΈ μΉœν™”μ„±κ³Ό 예츑 κ°€λŠ₯성을 λŒ€ν­ ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.


1. πŸ“¦ νŒ¨ν‚€μ§€ 및 κΈ°λ³Έ ꡬ쑰

ν•­λͺ© React Query v3 TanStack Query v5 λΉ„κ³ 
νŒ¨ν‚€μ§€λͺ… react-query @tanstack/react-query νŒ¨ν‚€μ§€ μž¬μ„€μΉ˜ 및 import 경둜 μˆ˜μ • ν•„μˆ˜
지원 ν™˜κ²½ React μ „μš© React, Vue, Svelte λ“± ν”„λ ˆμž„μ›Œν¬μ— ꡬ애받지 μ•ŠλŠ” λ²”μš© 라이브러리둜 μ§„ν™”
Query Key λ¬Έμžμ—΄ λ˜λŠ” λ°°μ—΄ ('todos') 무쑰건 λ°°μ—΄ (['todos']) ν‚€ κ΄€λ¦¬μ˜ 일관성 확보

2. βš™οΈ λ¬Έλ²•μ˜ 톡일: Single Object Signature

더 이상 ν›…μ˜ 인자둜 λ¬Έμžμ—΄, 콜백 ν•¨μˆ˜, μ˜΅μ…˜μ„ μ„žμ–΄μ„œ μ“Έ 수 μ—†μŠ΅λ‹ˆλ‹€. 였직 단일 객체(Object) ν˜•νƒœλ‘œλ§Œ 전달해야 ν•©λ‹ˆλ‹€.

TypeScript

`// ❌ v3 (v5μ—μ„œλŠ” μ—λŸ¬ λ°œμƒ) useQuery('todos', fetchTodos, { enabled: true });

// βœ… v5 (단일 객체 ν˜•νƒœλ‘œ 톡일) useQuery({ queryKey: ['todos'], queryFn: fetchTodos, enabled: true, });`

3. 🚨 useQuery 콜백 ν•¨μˆ˜ μ™„μ „ 제거 (κ°€μž₯ 큰 λ³€ν™”)

⚠️ useQuery 내뢀에 있던 onSuccess, onError, onSettled μ˜΅μ…˜μ΄ μ™„μ „νžˆ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. (단, useMutationμ—λŠ” κ·ΈλŒ€λ‘œ μœ μ§€λ©λ‹ˆλ‹€.)

4. 🏷️ 직관적인 넀이밍 λ³€κ²½

5. πŸš€ React 18 Suspense μ „μš© ν›… λ„μž…

기쑴의 { suspense: true } μ˜΅μ…˜μ„ μ œκ±°ν•˜κ³ , νƒ€μž… μ•ˆμ •μ„±μ΄ 보μž₯λ˜λŠ” λ³„λ„μ˜ ν›…μœΌλ‘œ λΆ„λ¦¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 훅을 μ‚¬μš©ν•˜λ©΄ λ°˜ν™˜λ˜λŠ” dataκ°€ undefinedκ°€ μ•„λ‹˜μ„ νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ 보μž₯ν•©λ‹ˆλ‹€.