๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป DEV/React-Query5

[ReactQuery] ReactQuery - ์„ค์ •ํŒŒ์ผํ˜•์‹ ์ ‘๊ทผ (์š”์•ฝ)์ œ๊ฐ๊ธฐ ๋‹ค๋ฅธ React-query ์„ค์ •ํŒŒ์ผ์„ ๋‹ค๋ค„๋ณด๊ธฐ์œ„ํ•ด ์ž‘์„ฑํ•œ๋‹ค. 1. .mjs (eslint.config.mjs) 2. .json (eslint.json) 3. .cjs (.eslintrc.cjs)๋ฐฉ๋ฒ• 1. .mjs (eslint.config.mjs)import { dirname } from "path";import { fileURLToPath } from "url";import { FlatCompat } from "@eslint/eslintrc";const __filename = fileURLToPath(import.meta.url);const __dirname = dirname(__filename);const compat = new FlatCompat({ baseDire.. 2025. 7. 17.
[ReactQuery] (4) ReactQuery - useIsFetching (feat. Nextjs) ์ ‘๊ทผ (์š”์•ฝ)์•ฑ์—์„œ isLoading ๊ณผ isFetching๋งŒ์„ ์‚ฌ์šฉํ•ด ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค ๊ฐœ๋ณ„ Loading Indicator๋งŒ์„ ํ™œ์šฉํ–ˆ๋‹ค๋ฉด,useIsFetching์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ ๋˜๊ณ  ๋” ํฐ ์•ฑ์— ์ค‘์•™ ์ง‘์ค‘์‹ Loading Indicator๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์ •๋ฆฌ๋ฅผ ๋‚จ๊ธด๋‹ค.   1. isLoading & isFetching & useIsFetching   2. useIsFetching ์ ์šฉํ•˜๊ธฐ   3. ์ ์šฉ TEST๋ฐฉ๋ฒ•  1. isLoading & isFetching & useIsFetching# useIsFetching- ๊ฐ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด "๊ฐœ๋ณ„ ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ (Loading Indicator)" ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ - "์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๋”ฉ ์ธ๋””์ผ€์ดํ„ฐ"๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์•ฑ์„ ์—…๋ฐ์ดํŠธ ํ•  ์˜ˆ์ •!>> useIsF.. 2025. 3. 19.
[ReactQuery] (1) ReactQuery ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์ ‘๊ทผ (์š”์•ฝ)reactQuery์˜ ๊ฐœ์š”๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.   1. Client State vs Server State 1. Client State - ์›น ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด ์˜๋ฏธ (๋‹จ์ˆœํžˆ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ)  (ex_ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๋ฐ์€/์–ด๋‘์šด ํ…Œ๋งˆ๋ฅผ ์„ ํƒํ•˜๋Š” ๋“ฑ์˜ ์„œ๋ฒ„์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๊ณผ๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ)2. Server State- ์„œ๋ฒ„ ์ƒํƒœ๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์— ํ‘œ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ  (ex_๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๋ฐ์ดํ„ฐ)- ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์— ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๊ธฐ์— ์„œ๋ฒ„์— ์ €์žฅ๋จ   2. React Query ํŠน์ง• 1. React Query๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ๊ด€๋ฆฌ React Code ↔ React Query Cache ↔ S.. 2025. 3. 15.
[ReactQuery] (3) ReactQuery - customHooks (feat. Nextjs) ์ ‘๊ทผ (์š”์•ฝ)reactQuery๋ฅผ ํ™œ์šฉํ•ด custom hooks์„ ์ž‘์„ฑํ•œ๋‹ค. (queryKey์™€ queryFn)     1. queryKey Object (queryKey Namespace) ํŒจํ„ด์œผ๋กœ ์ •๋ฆฌ- queryKey : ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ์‹๋ณ„ํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• - ์ฟผ๋ฆฌ ํ‚ค ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ„ด์„ ํ™œ์šฉํ•œ ํšจ์œจ์  ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ- ./react-query/index.ts   2. hooks ํด๋” ๋‚ด์— customHooks ์ž‘์„ฑ => useExampleQuery.ts- app/hooks/queries/useExampleQuery.ts- app/hooks/queries/mutation/useExampleMutation.ts   3. useExampleQuery.ts (CustomHooks ์ฝ”๋“œ ํ˜•์‹)- Data Fet.. 2025. 3. 15.
[ReactQuery] (2) Nextjs ํ”„๋กœ์ ํŠธ์— ReactQuery ์ ์šฉ ์ ‘๊ทผ (์š”์•ฝ)Next.js ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, Web App์˜ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค.๊ณต์‹ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธ ํ•ด๋ณด๋ฉด, npm ์—์„œ์˜ ๋ˆ„์  ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ 18์–ต์— ์œก๋ฐ•ํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์น˜๊ฐ€ ์ƒ์Šนํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ๋งŒ ํ•ด๋„์–ผ๋งˆ๋‚˜ ํ•ซํ•œ ๊ธฐ์ˆ ์ธ์ง€ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜์—ฌ ์น˜์—ดํ•˜๊ฒŒ ์—ฐ๊ตฌ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.(์˜ˆ์ „์— ๊ฐœ๋ฐœ ๋•Œ์— ๋“œ๋ฌธ๋“œ๋ฌธ ํ™œ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ทธ ์ด์ƒ์œผ๋กœ ์นœ์ˆ™ํ•ด์ง€๊ณ ์ž ํ•œ๋‹ค) 1. ReactQuery ์„ค์น˜- npm install @tanstack/react-query- npm install @tanstack/react-query-devtools 2. ESLint Plugin ์„ค์น˜- npm i -D @tanstack/eslint-plugin-query- ๊ธฐํƒ€ ์„ค์ • (... 2025. 3. 14.