RTK Query VS React-Query ๐Ÿ‘Š๐Ÿป

์ˆ˜์ •ยท2023๋…„ 8์›” 1์ผ
1

React-Query

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๊ฐ€์žฅ ์ตœ๊ทผ Redux-toolkit ์ฐ๋จนํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ–ˆ๋‹ค.

๊ทธ๋•Œ RTK Query์— ๊ด€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์—ˆ๋Š”๋ฐ, ์ •๋ฆฌํ•˜๋ฉด์„œ ๋“  ์ƒ๊ฐ์€ '์–ด? ์ด๊ฑฐ ๋ญ”๊ฐ€ ์—ญํ• ์ด React-Query์™€ ๋น„์Šทํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ, ์–ด๋–ค ๊ฒŒ ๋‹ค๋ฅธ์ง€ ํ•œ ๋ฒˆ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค'์˜€๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์„ ํ†ตํ•ด RTK Query์™€ React-Query ์ฐจ์ด์  ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

์œ„ ์‚ฌ์ง„ 2๊ฐ€์ง€๋Š” ๋‚ด๊ฐ€ ์ •๋ฆฌํ–ˆ๋˜ RTK Query์™€, React-Query์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ์บก์ณํ•ด ์˜จ ๊ฒƒ์ด๋‹ค!

์ฐธ๊ณ : RTK Query ๊ณต์‹๋ฌธ์„œ

๋ถ€์กฑํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋ณด์ถฉ์„ค๋ช… ๋Œ“๊ธ€์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค! โœจ


๐Ÿค“ ๋‘˜์˜ ๊ณตํ†ต์ 

  • ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ด€๋ฆฌ
    ์„œ๋ฒ„์™€์˜ API ํ˜ธ์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ์š”์ฒญ๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ์ž๋™ ์บ์‹ฑ ๋ฐ ์ตœ์ ํ™”(์š”์ฒญ ์ค‘๋ณต ๋ฐฉ์ง€ ๋“ฑ..)

  • ์ƒํƒœ ๊ด€๋ฆฌ์˜ ๋‹จ์ˆœํ™”
    ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค.

๋“ฑ์˜ ๊ณตํ†ต์ ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค!

๐Ÿค“ ๋‘˜์˜ ์ฐจ์ด์ 

์ƒํƒœ ๊ด€๋ฆฌ

[RTK Query (Redux)]
RTK Query๋Š” Redux๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๋ฏ€๋กœ, Store ์ฆ‰ ์ƒํƒœ ์ €์žฅ์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ Redux๊ฐ€ ์ ์šฉ๋œ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

[React-Query]
React-Query๋Š” ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ๊ฐ€ ๋”ฐ๋กœ ์—†๊ณ , ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ํŒŒ์•…ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ ๋ณด๋ฉด ๋œ๋‹ค.

API ํ˜ธ์ถœ๋ฒ•

[RTK Query (Redux)]
RTK์˜ ํ•ต์‹ฌ! createAPI ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
createAPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, endpoints ํŒŒ๋ผ๋ฏธํ„ฐ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋•Œ ์ •์˜๋œ

[React-Query]
์ƒํ™ฉ์— ๋”ฐ๋ผ useQuery, useMutation ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”๋กœ๋Š” ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ, mutation์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ •๊ทœํ™”

[RTK Query (Redux)]
createApi์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๊ทœํ™”ํ•˜์—ฌ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

[React-Query]
๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ •๊ทœํ™”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, API์˜ ์š”์ฒญ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•ด์ฃผ๊ณ  ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

์ตœ์ ํ™”

[RTK Query (Redux)]
์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋ฐ ์บ์‹ฑ์„ ์ตœ์ ํ™”ํ•˜๋Š”๋ฐ Redux ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

[React-Query]
์š”์ฒญ ์ค‘๋ณต ๋ฐฉ์ง€, ๋ฐ์ดํ„ฐ ์บ์‹ฑ, Refetch ๋“ฑ์„ ํ†ตํ•ด ์ตœ์ ํ™” ๋˜์–ด ์žˆ๋‹ค.

๐Ÿค“ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ• ๊นŒ?

RTK Query๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ด!

  • ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ Redux๋กœ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ!
  • ์ด๋ฏธ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ Redux๋กœ ํ•˜๊ณ  ์žˆ๊ณ , ์ฟผ๋ฆฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉ์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ!
  • ์ด๋ฏธ Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ์ด๋ฏธ ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋กœ์ง์„ ๋‹จ์ˆœํ™”์‹œํ‚ค๊ณ  ์‹ถ์„ ๋•Œ!
  • Redux DevTools ์‚ฌ์šฉํ•ด์„œ state history ๋ณ€ํ™”๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ!
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด React ๋ฐ–์—์„œ ๋™์ž‘ํ•ด์•ผ ํ•  ๋•Œ!

React-Query๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ด!

  • ๋‹จ์ผ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์—์„œ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ!
  • ์š”์ฒญ ์ค‘๋ณต ๋ฐฉ์ง€, ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ์ž๋™ Refetching ๋“ฑ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ!

๐Ÿค“ ๋น„๊ต ํ…Œ์ด๋ธ”

RTK Query์™€ React-Query์„ ๋น„๊ตํ•˜๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค.
์ฐธ๊ณ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

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