๐Ÿ’ป 20240424 ์šฐ์•„์ฝ˜ TanStack Query & Zustand

์ด์ถ˜๊ธธยท2024๋…„ 4์›” 24์ผ
0

ํ•™์Šต์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
1/4
post-thumbnail
post-custom-banner

๐Ÿ“Œ ์ฐธ์กฐ

ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ด€๋ฆฌ ์‹ค์ „ํŽธ with React Query & Zustand ์šฐ์•„์ฝ˜2023


๐Ÿ“Œ ๊ฐœ์š”

๊ธฐ์กด ์กฐ์ง์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ TanStack Query(FKA React Query) ๊ทธ๋ฆฌ๊ณ  Zustand๋ฅผ ๋„์ž…ํ•ด ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๊ฒƒ์„ ๋„์ž…ํ•˜๋Š”๋ฐ ๊ฑฐ์˜ ์˜ˆ์†ก๋…ผ์Ÿ๊ธ‰ ํƒ์ƒ๊ณต๋ก ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ต์ด ๋‚œ๋‹ค. ๊ฒฐ๊ณผ๋ก ์ ์œผ๋กœ ๋„ˆ๋ฌด ๋งŒ์กฑํ•˜๋ฉด์„œ ์“ฐ๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ตœ๊ทผ ๋™ํ–ฅ์ด ์ด๋ ‡๊ฒŒ ๋‘ ๊ธฐ์ˆ ์ด Client State ๊ด€๋ฆฌ ํ•˜๋Š”๋ฐ ๊ตญ๋ฃฐ์ฒ˜๋Ÿผ ์“ฐ์ด๊ณ  ์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ–ˆ๊ณ , ๋ฆฌ๋งˆ์ธ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ํ•™์Šต ์ž๋ฃŒ๋ฅผ ์ฐพ๋˜ ์ค‘ ์šฐ์—ฐํžˆ, ์šฐ์•„์ฝ˜ 2023์—์„œ ๋ฐœํ‘œํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


๐Ÿ“Œ ์šฐ๋ฆฌ๊ฐ€ ๋„์ž…ํ•œ ์ด์œ 

TanStack Query

ํ† ์Šค์—์„œ React-Query๋ฅผ ์ฃผ์š” ์Šคํƒ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธธ๋ž˜ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๋„์ž…์„ ํ•ด๋ดค์—ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋Œ€๋งŒ์กฑ, Key๋ฅผ ํ†ตํ•ด ๋ณ€ํ™”๋œ ๊ฐ’๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ , API ์ƒํƒœ๋ฅผ Statusํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , Success, Error, ๊ทธ๋ฆฌ๊ณ  ์บ์‹ฑ๊นŒ์ง€, axios๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ์ผ์ด ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋˜ ๋ถˆ์•ˆ์ •ํ•œ ๋ชจ๋“ˆ๋“ค์„ ์ผ๊ด„์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด๊ฒƒ์„ ๋„์ž…์„ ์•ˆํ•  ์ด์œ ๊ฐ€ ์—†์—ˆ๋‹ค.

Zustand

TanStack Query๊ฐ€ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋‹ค, ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ํ•„์š”ํ•˜๋‹ค. ํ•œ์ฐฝ, Recoil์ด ํŽ˜์ด์Šค๋ถ์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  Atom์ด๋ผ๋Š” ๊ฐœ๋…์ด ํฅ๋ฏธ๋กœ์› ๋‹ค. ํ•˜์ง€๋งŒ, v1.0์ด ์˜ค๋žœ ๊ธฐ๊ฐ„๋™์•ˆ ๋‚˜์˜ค์ง€ ์•Š๋Š”๊ฒƒ์ด ๋ถˆ์•ˆ ํฌ์ธํŠธ์˜€์œผ๋ฉฐ, ๋น ๋ฅธ ๋„์ž…์„ ์œ„ํ•ด Redux ๊ธฐ๋ฐ˜์— ์ต์ˆ™ํ•œ Zustand๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.


๐Ÿ“Œ ๋ฐฐ๋ฏผ์ด ๋„์ž…ํ•œ ์ด์œ 

๊ณ ๋ฏผ - ์ƒํƒœ ๊ด€๋ฆฌ์— ๋น„๋Œ€ํ•จ

  1. ๊ถ๊ทน์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ๋ณด๋‹ค API ํ˜ธ์ถœ ๋กœ์ง์ด ๋งŽ์Œ
  2. ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋น„๋Œ€ํ•จ

Zustand (Global State)

  1. ์ปดํฌ๋„ŒํŠธ ๋ฐ–์—์„œ๋„ ์ƒํƒœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅ
  2. ์‚ฌ์šฉ์„ฑ์ด ๋‹จ์ˆœํ•ด ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋‚ฎ์Œ
  3. ์ƒํƒœ๊ด€๋ฆฌ์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋„ ์ ์Œ
  4. Redux Devtools ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ํ™œ์šฉ ๊ฐ€๋Šฅ

TanStack-Query (API Store)

  1. API ํ˜ธ์ถœ ์ฝ”๋“œ๋กœ ๋น„๋Œ€ํ•ด์ง„ Store๋ฅผ ๋ชฉ์ ์— ๋งž๊ฒŒ ๋ถ„๋ฆฌ
  2. ๋ฆฌ์•กํŠธ ํ›…๊ณผ ๋น„์Šทํ•œ ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์„ฑ
  3. ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค & ์˜ต์…˜์„ ์ œ๊ณตํ•ด ์ ์€ ์ฝ”๋“œ๋กœ ๊ฐ•๋ ฅํ•œ ๋™์ž‘
  4. ์ž์ฒด ๊ฐœ๋ฐœ๋„๊ตฌ ์ œ๊ณต

๐Ÿ“Œ ๊ธฐ์ˆ ์˜ ๋„์ž…์œผ๋กœ ์ ์šฉ๋œ ์•„ํ‚คํ…์ฒ˜

๋ฐฐ๋ฏผ ์ฝ”์–ด ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜

์•„ํ‚คํ…์ฒ˜ ํ๋ฆ„

์„ค๋ช…

  1. ์ปดํฌ๋„ŒํŠธ ๋กœ์ง ์ตœ์ ํ™” - ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ๋กœ์ง ์ตœ์ ํ™”
  2. State ํ™œ์šฉ - Local State, Global State(Zustand), API State(TanStack Query)

๐Ÿ“Œ ๊ฒฐ๋ก 

  1. ๊ณ ๋ฏผ ๋˜ํ•œ ๋ฆฌ์†Œ์Šค๋ผ๋Š” ๋ง์ด ๋˜๊ฒŒ ์™€ ๋‹ฟ์•˜๋‹ค.
  2. ๊ณ ๋ฏผํ•˜๊ณ  ๊ณ ๋ฏผ์„ ํ•ด๊ฒฐํ•ด ์ค„ ์ตœ์ ์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.
  3. ํ˜„์žฌ ์Šคํƒ์ด ์ •๋‹ต์ด์ž ๋์ด ์•„๋‹ˆ๋‹ค. ๊ณ ๋ฏผ์€ ๊ณ„์†๋œ๋‹ค.
  4. ์ œํ’ˆ์ด๋ผ๋Š” ๊ด€์ ์—์„œ ์–ด๋–ค ๊ณ ๋ฏผ๊ณผ ํ•ด๊ฒฐ์ด ์ œํ’ˆ ๊ทธ๋ฆฌ๊ณ  ์กฐ์ง์—๊ฒŒ ์žˆ์–ด์„œ ๊ฐ€์žฅ ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ธ์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ๋‚˜์•„๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
profile
์ผ์ง€๋ฅผ ๊พธ์ค€ํžˆ ์ž‘์„ฑํ•˜์ž.
post-custom-banner

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