Part3-Team15 / taskify

[์ค‘๊ธ‰ ํ”„๋กœ์ ํŠธ 15ํŒ€] taskify: ์Šค๋งˆํŠธํ•œ ์ผ์ • ๊ด€๋ฆฌ
https://taskify-15.vercel.app/
0 stars 3 forks source link

๐Ÿ—ฃ Presentation: ๋ฐœํ‘œ ์ž๋ฃŒ ์žฌ๋ฃŒ ์ค€๋น„ #122

Closed un0211 closed 1 week ago

un0211 commented 3 weeks ago

์ž‘์—… ์„ค๋ช…

๋ฐœํ‘œ์ž(๋Œ€์–‘๋‹˜)๊ฐ€ ๋ฐœํ‘œ ์ค€๋น„๋ฅผ ์ˆ˜์›”ํžˆ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฏธ๋ฆฌ ์ž๋ฃŒ๋ฅผ ์ค€๋น„ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์ž‘์—… ๋ชฉ๋ก

์ฝ”๋ฉ˜ํŠธ (optional)

๋Œ€๋žต ์ ์–ด๋ณด์•˜๋Š”๋ฐ ๋‹ค๋“ค ์˜๊ฒฌ์žˆ์œผ๋ฉด ์–ผ๋งˆ๋“ ์ง€ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”! ํŠนํžˆ ๋Œ€์–‘๋‹˜ ํ•„์š”ํ•œ ์ •๋ณด ๊ตฌ์ฒด์ ์œผ๋กœ ๋” ์ ์œผ์…”๋„ ์ข‹์•„์š”~ (๋‚ ์งœ ์ž„์˜๋กœ 7/5-6 ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค! ๋Œ€์–‘๋‹˜ 6-7 ์ž๋ฃŒ์ค€๋น„ํ•˜์‹œ๊ณ  7์ผ๋‚  ๊ฐ™์ด ์ ๊ฒ€ํ•ด๋ณด๋Š”๊ฒŒ ์–ด๋–จ๊นŒ ํ•ด์„œ!)

wayandway commented 3 weeks ago

๋„์ „๊ณผ์ œ ๋˜๋Š” ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ

์ €ํฌ ๊ฐ™์ด ๊ณ ๋ฏผํ•ด๋ดค๋˜ ๊ฑฐ๋‚˜, ๊ฐœ์ธ์ ์œผ๋กœ ์–ด๋ ค์›Œ์„œ ๋งŽ์ด ๊ณ ๋ฏผํ•˜๊ณ  ํ•ด๊ฒฐํ•ด๋ณธ ๋ฌธ์ œ์‚ฌํ•ญ๋“ค๋„ ๋“ค์–ด๊ฐ€๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”! ์ฑŒ๋ฆฐ์ง•ํ–ˆ๋˜ ๊ฒฝํ—˜๋„ ์ •๋ฆฌ๋˜๊ณ , ์ด๋Ÿฐ ๋ฐœํ‘œ์—์„  ์ด๋Ÿฐ ๊ณผ์ •์„ ๋‹ด๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š” ๐Ÿ˜Ž

wayandway commented 2 weeks ago

React Query ๋ฐ์ดํ„ฐ ์บ์‹ฑ์˜ ์ด๋ฉด (๋ถ€์ œ: ์นด๋“œ๋ชจ๋‹ฌ์˜ ๋Œ“๊ธ€ ์„น์…˜์ด ๊นœ๋นก๊ฑฐ๋ฆฌ๋Š” ๋ฌธ์ œ)

๋ฌธ์ œ ์›์ธ

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

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

(๋ฉ˜ํ† ๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ๐Ÿ™)

Tanstack Query(๊ตฌ React Qeury)์˜ useQueryํ›…์˜ refetch ํ•จ์ˆ˜ ์‚ฌ์šฉ

refetch ๋Š” React Query์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ์ด๋ฏธ ์‹คํ–‰๋œ ์ฟผ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํŠน์ • ์‹œ์ ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๊ณ , ์œ ์ € ์ƒํ˜ธ์ž‘์šฉ์— ์˜ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•ด๊ฒฐ ์ƒ์„ธ ๊ณผ์ •

  1. useQuery ํ›…์„ ์‚ฌ์šฉํ•  ๋•Œ, ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด์—์„œ refetch ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜จ๋‹ค.
  2. ์šฐ๋ฆฌ ํŒ€์—์„œ๋Š” useFetchData๋ผ๋Š” ์ปค์Šคํ…€ ํ›…์„ ์‚ฌ์šฉํ•ด useQueryํ›…์„ ๋ฆฌํ„ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  3. ์นด๋“œ ๋ชจ๋‹ฌ์ด ์—ด๋ฆด ๋•Œ๋งˆ๋‹ค refetch๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋Œ“๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค.
  4. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ ๋  ๋•Œ, ํด๋ฆฐ์—…์„ ํ†ตํ•ด refetch ๋œ ๋Œ“๊ธ€ ๋ฐ์ดํ„ฐ์˜ ์ฟผ๋ฆฌ๋ฅผ ์ทจ์†Œ์‹œํ‚จ๋‹ค.
    
    // useFetchData ์ปค์Šคํ…€ ํ›…(useQuery ๋ฐ˜ํ™˜)์—์„œ refetch ํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค.
    // ์—ฌ๊ธฐ์„œ ๊ฐ ๋Œ“๊ธ€๋“ค์€ ๊ฐ ์นด๋“œ์˜ ๊ณ ์œ ํ•œ id๊ฐ’์„ ์ฟผ๋ฆฌํ‚ค๋กœ ๋“ฑ๋กํ•ด ํŒจ์น˜ํ•œ๋‹ค.
    const { data, refetch } = useFetchData<CommentsResponse>(['comments', card.id], () => getComments(card.id));

// useEffect ํ›…์œผ๋กœ ๋ชจ๋‹ฌ์ด ์—ด๋ฆด ๋•Œ๋งˆ๋‹ค refetch๋ฅผ ํ˜ธ์ถœํ•ด ๋Œ“๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค. useEffect(() => { refetch();

return () => {
 // ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ ๋  ๋•Œ, ํด๋ฆฐ์—…์„ ํ†ตํ•ด ๋Œ“๊ธ€ ์ฟผ๋ฆฌ๋ฅผ ์ทจ์†Œ์‹œ์ผœ ๋ถˆํ•„์š”ํ•œ API ์š”์ฒญ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  queryClient.cancelQueries({ queryKey: ['comments', card.id] });
};

}, [refetch, queryClient, card.id]);



### ํ•ด๊ฒฐ ๊ฒฐ๊ณผ
<img src="https://velog.velcdn.com/images/wayandway/post/fb8cf0b2-c0f7-4144-9c3b-967d618dad7e/image.gif" width=300 />

์นด๋“œ๋ชจ๋‹ฌ์„ ๋„์šธ ๋•Œ๋งˆ๋‹ค ๋” ์ด์ƒ ๋Œ“๊ธ€ ๋ฐ์ดํ„ฐ๋“ค์ด ๊นœ๋นก๊ฑฐ๋ฆฌ์ง€ ์•Š๊ณ , ์ •์ƒ์ ์œผ๋กœ ๋ฆฌํŒจ์น˜๋œ๋‹ค.