React

[React-query] ๋ฐ์ดํ„ฐ ํ”„๋ฆฌํŽ˜์นญ ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ

martinooo 2024. 6. 19. 20:18
728x170

 

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œ


ํ’€์Šคํƒ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์„ ์šฐ์„ ์œผ๋กœ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์šฐ์„ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ ค ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์–ผ๋งˆ ์ „์— ์ฝ์€ ์ฑ…์—์„œ

"๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ˆ˜๊ณ ๋กญ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ํŽธ๋ฆฌํ•˜๊ณ , ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด ํŽธ๋ฆฌํ•˜๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ˆ˜๊ณ ๋กญ๋‹ค"

 

๋ผ๋Š” ๋ง์„ ๋˜์ƒˆ๊ฒจ ๋ด…๋‹ˆ๋‹ค!

 

Prefetching์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํ”„๋ฆฌํŽ˜์นญ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์บ์‹œ์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋ฆฌํŽ˜์นญ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์บ์‹ฑํ•˜๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด

๐Ÿ’ก ๋ฏธ๋ฆฌ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์œผ๋กœ ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ ํŠน์ • ํƒญ์„ ๋ˆ„๋ฅผ ํ™•๋ฅ ์ด ๋†’์€ ๊ณณ์—์„œ ํ”„๋ฆฌํŽ˜์นญ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ™”๋ฉด์ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ด๋™ํ•˜๊ณ  ์บ์‹ฑ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šค ํ•ด์„œ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์€ ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

300x250

 

ํ”„๋ฆฌํŽ˜์นญ์„ ์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

React-query์—์„œ ํ”„๋ฆฌํŽ˜์นญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋” ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋ฆฌํŽ˜์นญ์ด ์—†๋Š” ๊ฒฝ์šฐ: ๋‹ค์Œ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋Š”๋ฐ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ถ€๋“œ๋Ÿฝ์ง€ ์•Š์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ฆฌํŽ˜์นญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ: ๋‹ค์Œ ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์บ์‹ฑํ•ด ๋‘ ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๋”์šฑ ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ํ™”๋ฉด์„ ์ œ๊ณตํ•˜๊ณ  ์ข‹์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿคท‍โ™‚๏ธ ํ”„๋ฆฌํŽ˜์นญ์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?

 

React-query ์…‹ํŒ… ๋ฐฉ๋ฒ•

https://cometruedream.tistory.com/130

 

React-query ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ“–React-query ์•Œ๊ธฐ์ „์— JSX๋ž€?JSX(javascript XML)๋Š” javascript์— XML์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋‹ค.JSX๋Š” React์—์„œ ์‚ฌ์šฉ๋˜๋Š”๋ฐ ๊ณต์‹์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.JSX๋Š” javascript ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ”๋ฒจ๋“ฑ๋“ฑ์„

cometruedream.tistory.com

 


1. useQueryClient ์„ค์ •

import { useQueryClient } from '@tanstack/react-query';

const queryClient = useQueryClient();

 

useQueryClient์„ import ํ•œ ํ›„ useQueryClient๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

 

2. prefetchNextPage ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  prefetchQuery๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

useEffect(() => {
    const prefetchNextPage = async () => {
        const nextPage = currentPage + 1;
        const queryKey = [POI_KEYS.REVIEW_LIST, params?.id, nextPage, reviewFilter];
        const queryFn = () =>
          apiGetReviewList({
          poiIdx: params?.id,
          page: nextPage,
          pageSize: PAGE_SIZE.REVIEW,
          type: reviewFilterConvert(reviewFilter),
      });

       await queryClient.prefetchQuery({ queryKey, queryFn });
    };

    prefetchNextPageReviews();
}, [currentPage])

 

ํ”„๋ฆฌํŽ˜์น˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋กœ์ง์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. 

์ €์˜ ๋ชฉํ‘œ๋Š” prefetch ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

React-query Tool์„ ํ™œ์šฉํ•ด์„œ ํ”„๋ฆฌํŽ˜์นญ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

“GET_REVIEW_LIST”๋ฅผ ๋ฏธ๋ฆฌ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿคท‍โ™‚๏ธ useQueryClient์˜ ์ค‘์š”ํ•œ ์ ?


useQueryClient๋Š” QueryClient ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

react-query๋ฅผ ์ดˆ๊ธฐ ์„ค์ •ํ•  ๋•Œ QueryClient๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์ •ํ•˜๋ฏ€๋กœ useQueryClient๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํฐ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด hooks ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

์žฌ๋ฐŒ๋Š” ์˜ค๋Š˜์˜ ๋ ๋ณ„ ์šด์„ธ ๋ณด๊ณ  ๊ฐ€์„ธ์š”! 

 

 

https://cometruedream.tistory.com/247

 

[React] Tailwind ํ•œ์ค„, ๋‘์ค„, ์„ธ์ค„ ํšจ๊ณผ className ์ปค์Šคํ…€

๐Ÿคท‍โ™‚๏ธ Tailwind ํ•œ์ค„, ๋‘์ค„, ์„ธ์ค„ ํšจ๊ณผํ”„๋กœ์ ํŠธ ์ง„ํ–‰์ค‘ ๋ฐฐ๋„ˆ ๋งํฌ์— URL ๊ธธ์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์„œ 3์ค„ ํšจ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. React + Tailwind CSS ์…‹ํŒ…๋œ ํ”„๋กœ์ ํŠธ ์—ฌ์„œ CSS ํŒŒ์ผ & style ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/243

 

NestJS Lifecycle (์ƒ๋ช…์ฃผ๊ธฐ) ๊ฐœ๋…

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œ Nest JS ๊ฐœ๋…?Nest JS๋Š” Node JS ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ƒ๋‹นํžˆ ์˜ค๋žซ๋™์•ˆ Express ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์••๋„์ ์ธ ์ 

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/242

 

๋ฆฌ์•กํŠธ Vite Proxy ํ™œ์šฉํ•œ CORS ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œํ”„๋ก ํŠธ์—”๋“œ ๋ฒˆ๋“ค๋Ÿฌ ๊ฐœ๋…๊ณผ webpack vs vite ๋น„๊ต์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ๊ธ€์„ ๋ณด์‹œ๋ฉด ๋” ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค^^ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ฒˆ๋“ค๋Ÿฌ ๊ฐœ๋…๊ณผ webpack vs vite ๋น„๊ตhttps://comet

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/241

 

React ํด๋”๊ตฌ์กฐ FSD ๊ธฐ๋Šฅ ๋ถ„ํ™œ ์„ค๊ณ„ ์•„ํ‚คํ…์ฒ˜

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ์•ž์„œํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ํด๋” ๊ตฌ์กฐ, ์„ค๊ณ„์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์–ด๋ ต๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— React FSD ํด๋”๊ตฌ์กฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ์˜ˆ์ •์ด๋ผ์„œ FSD ์•„ํ‚คํ…

cometruedream.tistory.com

 

 

https://cometruedream.tistory.com/244

 

์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” Prisma ๋ช…๋ น์–ด ์ •๋ฆฌ

๐Ÿคท‍โ™‚๏ธ Prisma ๋ช…๋ น์–ด ๋ณธ๋ก ์— ์•ž์„œ Prisma๋ž€?Nest JS ํ”„๋ ˆ์ž„์›Œํฌ์™€ Prisma ORM์„ ํ™œ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Prisma๋Š” Node JS ๊ธฐ๋ฐ˜์— ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ์ž˜๋˜๋ฉฐ Prisma + DB ์—ฐ๋™์œผ

cometruedream.tistory.com

 

 

๊ทธ๋ฆฌ๋“œํ˜•