๐Ÿ๏ธTanStack Query๋กœ ๋ณต์žกํ•œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ

zizonyoungjunยท2025๋…„ 1์›” 8์ผ
11
post-thumbnail

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด, ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” "์ƒํƒœ"๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ˜„์žฌ ์–ด๋–ค ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ •๋ณด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”์ง€๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ์š”, ์ด๋Š” ํฌ๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ์™€ ์„œ๋ฒ„ ์ƒํƒœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํ…Œ๋งˆ, ์ž…๋ ฅํ•œ ํผ ๋ฐ์ดํ„ฐ, ํ˜น์€ UI ์ปดํฌ๋„ŒํŠธ์˜ ํ˜„์žฌ ์ƒํƒœ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋ผ์šฐ์ € ์•ˆ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, ์„œ๋ฒ„ ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ ์™ธ๋ถ€, ์ฆ‰ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์œ ์ € ๋ชฉ๋ก, ์ƒํ’ˆ ์ •๋ณด, ํ˜น์€ ์ด์ „์— ์ฃผ๊ณ  ๋ฐ›์•˜๋˜ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ณผ์ •์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•˜๋ฉฐ, ํ•ญ์ƒ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น, ์„œ๋ฒ„์—์„œ ์ƒํ’ˆ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ค๋ž˜๋œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด React์—์„œ๋Š” ์ฃผ๋กœ useState์™€ useEffect๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ด๋ฅผ ํ™œ์šฉํ•ด ์œ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

function UserList() {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetch("/api/users")
      .then((response) => response.json())
      .then((data) => setUsers(data));
  }, []);

  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

์œ„ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•˜๊ณ  ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ๋œ ํ›„ ๋‹ค์‹œ ๋งˆ์šดํŠธ๋˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๊ฐ€ ์—†์„ ์ง€๋ผ๋„ ๋งค๋ฒˆ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋ฉด ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚ญ๋น„๋˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์—๋„ ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋”๋ผ๋„ ํด๋ผ์ด์–ธํŠธ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ์ •๋ณด๊ฐ€ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๋กœ์ง์„ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ด ๊ณผ์ •์—์„œ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋”ํ•ด, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—” ๋ฌธ์ œ๊ฐ€ ๋”์šฑ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ € ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ์œ ์ € ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค๋ฉด, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๊ฐ€ ๋™๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, "๋ˆ„๊ฐ€ ์ตœ์‹  ๋ฐ์ดํ„ฐ์ธ์ง€"๋ฅผ ๋‘๊ณ  ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ํ˜ผ๋ž€์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ .

React์˜ ๊ธฐ๋ณธ ๋„๊ตฌ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ์—์„œ ์—ฌ๋Ÿฌ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ƒํƒœ๋Š” ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ์™€ ๋‹ฌ๋ฆฌ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋™์‹œ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ณ , ์ง€์†์ ์œผ๋กœ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ, ์ค‘๋ณต๋œ ์š”์ฒญ์ด๋‚˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ, ๋‹จ์ˆœํžˆ useState์™€ useEffect๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ณต์žกํ•œ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ TanStack Query์ž…๋‹ˆ๋‹ค. TanStack Query๋Š” ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์บ์‹ฑํ•˜๊ณ , ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•˜๋ฉฐ, ์ค‘๋ณต๋œ ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋“ฑ React์˜ ๊ธฐ๋ณธ ๋„๊ตฌ๊ฐ€ ๊ฐ€์ง€๋Š” ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ์— ๋“œ๋Š” ๋ณต์žกํ•œ ๋กœ์ง์„ ์ค„์ด๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

TanStack Query์™€ ํ•ต์‹ฌ ๊ฐœ๋…

์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์€ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ค‘๋ณต๋œ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. TanStack Query๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ฉฐ, ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ๋ณต์žกํ•œ ๋กœ์ง์„ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Query์™€ ๋ฐ์ดํ„ฐ์˜ ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ

TanStack Query๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Query๋ผ๋Š” ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ‘ฎ Query๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ , ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋ฉฐ, ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ € ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” Query์™€ ํŠน์ • ์œ ์ €์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” Query๋ฅผ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ Query๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์š”์ฒญ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Query๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Query Key ๋ผ๋Š” ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Query Key๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„ํ‘œ ์—ญํ• ์„ ํ•˜๋ฉฐ, TanStack Query๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ € ๋ชฉ๋ก์„ ์š”์ฒญํ•˜๋ ค๋ฉด Query Key๋ฅผ ["users"]๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ํŠน์ • ์œ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ ค๋ฉด ["user", userId]์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ Query Key๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์š”์ฒญ๋˜์—ˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ƒˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

staleTime๊ณผ gcTime์˜ ์ ์ ˆํ•œ ์„ค์ •

TanStack Query๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด staleTime๊ณผ gcTime ์„ค์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ์ ์ ˆํžˆ ์กฐ์ •ํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ์ฃผ๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

staleTime์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ์ „ํžˆ ์œ ํšจํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋˜๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ์˜ ์œ ํ†ต๊ธฐํ•œ ๊ฐ™์€ ๊ฐœ๋…์ด์ฃ  โฑ๏ธ ์˜ˆ๋ฅผ ๋“ค์–ด, ์‹ค์‹œ๊ฐ„ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ฒ˜๋Ÿผ ์ž์ฃผ ๊ฐฑ์‹ ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” staleTime์„ ์งง๊ฒŒ ์„ค์ •ํ•จ์œผ๋กœ์จ ํ•ญ์ƒ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ œํ’ˆ ์ •๋ณด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋Š” staleTime์„ ๊ธธ๊ฒŒ ์„ค์ •ํ•œ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋ฉด์„œ๋„ ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcTime์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์กฐ๋˜์ง€ ์•Š์„ ๋•Œ ์บ์‹œ์— ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์œ ์ง€๋ ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๊ฒฝ์šฐ, gcTime์„ ๊ธธ๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ์—๋Š” gcTime์„ ์งง๊ฒŒ ์„ค์ •ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์ฃผ์‹ ๊ฑฐ๋ž˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ˆ๋กœ ๋“ค๋ฉด, ์‹ค์‹œ๊ฐ„ ๊ฐ€๊ฒฉ ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ staleTime์„ ์งง๊ฒŒ ์„ค์ •ํ•˜๊ณ  gcTime์„ ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์‡ผํ•‘๋ชฐ์—์„œ ์ œํ’ˆ ์ •๋ณด๋Š” ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— staleTime๊ณผ gcTime์„ ๋” ๊ธธ๊ฒŒ ์„ค์ •ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ๊ณผ ์‚ฌ์šฉ ๋นˆ๋„์— ๋งž๊ฒŒ ์„ค์ •์„ ์กฐ์ •ํ•˜๋ฉด, ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋ชจ๋‘ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Mutation๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

TanStack Query๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํžˆ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์€ Mutation์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. Mutation์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•œ ๋’ค, ๊ด€๋ จ๋œ Query๋ฅผ ์ž๋™์œผ๋กœ ๋ฌดํšจํ™”ํ•˜๊ณ  ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ํ™”๋ฉด์— ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด ์œ ์ €๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค ์œ ์ € ๋ชฉ๋ก์„ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๋“ฏ TanStack Query๋Š” ๊ธฐ์กด์˜ useState์™€ useEffect๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋˜ ๋ฌธ์ œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์บ์‹ฑํ•˜๋ฉฐ, ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์šฐ๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์นœ๊ตฌ์ฃ  !

Query Invalidation๊ณผ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”

์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ค‘์š”ํ•œ ์ ์€ ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋œ ํ›„์—๋„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํƒœ๊ฐ€ ํ•ญ์ƒ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋งŽ์€ ๋ณต์žกํ•œ ๋กœ์ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. TanStack Query๋Š” ์ด๋Ÿฌํ•œ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Query Invalidation์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๊ณผ์ •์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Query Invalidation์˜ ์—ญํ• 

Query Invalidation์€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ stale ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜์—ฌ, TanStack Query๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋œ ํ›„, ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ด์ƒ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋กœ ๊ฐ„์ฃผ๋˜๋ฉด Query Invalidation์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ ๋’ค์—๋„ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Query Invalidation์€ ๋ฐ์ดํ„ฐ๋ฅผ stale ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ์—ญํ• ๊นŒ์ง€๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์ถ”๊ฐ€์ ์ธ ์กฐ๊ฑด์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. TanStack Query๋Š” stale ์ƒํƒœ๊ฐ€ ๋œ Query๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ €, Query๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ํ™œ์„ฑํ™”๋˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์œผ๋กœ ๋Œ์•„์˜ฌ ๋•Œ refetchOnWindowFocus ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ฐฑ์‹ ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ๋ณต๊ตฌ๋˜์—ˆ์„ ๋•Œ refetchOnReconnect ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, refetchQueries๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ TanStack Query๋Š” Query Invalidation์„ ํ™œ์šฉํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ๋Œ€ํญ ์ค„์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๋ณต์žกํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•  ํ•„์š” ์—†์ด, ์„ค์ •์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ์ž‘์—…์„ ๊ฐ„๋‹จํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Mutation๊ณผ Invalidation์˜ ์—ฐ๊ฒฐ

TanStack Query๋Š” Mutation๊ณผ Query Invalidation์„ ๊ธด๋ฐ€ํžˆ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํ›„์—๋„ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Mutation์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ด€๋ จ๋œ Query๋ฅผ ์ž๋™์œผ๋กœ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๋กœ์ง์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด ์œ ์ €๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค ์œ ์ € ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด, Mutation์˜ ์„ฑ๊ณต ์ฝœ๋ฐฑ์—์„œ invalidateQueries๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น Query๋ฅผ ๋ฌดํšจํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const mutation = useMutation({
  mutationFn: addUser,
  onSettled: () => {
    queryClient.invalidateQueries({ queryKey: ["users"] });
  },
});

const handleAddUser = async () => {
  await mutation.mutateAsync(newUserData);
};

์œ„ ์ฝ”๋“œ๋Š” ์ƒˆ๋กœ์šด ์œ ์ €๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, ["users"]๋ผ๋Š” Query Key๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ stale ์ƒํƒœ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์œ ์ € ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž๋™์œผ๋กœ ์ตœ์‹  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Query Invalidation์€ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ๊ฐ„์†Œํ™”ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ๋„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ Query๋งŒ ๊ฐฑ์‹ ํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์ด ์ค„์–ด๋“ค๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. TanStack Query๋Š” ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ ํ•˜๋ฉฐ

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

์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ๋กœ ์ธํ•œ ์–ด๋ ค์›€์„ ๋Š๋ผ๊ณ  ์žˆ๋‹ค๋ฉด, TanStack Query๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด ๋ณด์„ธ์š”. ๊ฐœ๋ฐœ ๊ฒฝํ—˜๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ, ๋‘ ๋งˆ๋ฆฌ์˜ ํ† ๋ผ๋ฅผ ํ•œ ๋ฒˆ์— ์žก์„ ์ˆ˜ ์žˆ์„๊ฑฐ์˜ˆ์š” ๐Ÿฐโ˜˜๏ธ

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด