Skip to content

Commit 16d9c08

Browse files
authored
Merge pull request dnd-side-project#102 from dnd-side-project/feat/dnd-side-project#101
[FEAT] query-key-factory ์ ์šฉ
2 parents 9f5e5cb + b680e58 commit 16d9c08

File tree

7 files changed

+45
-9
lines changed

7 files changed

+45
-9
lines changed

โ€Žpackage.jsonโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
"prepare": "husky install"
1313
},
1414
"dependencies": {
15+
"@lukemorales/query-key-factory": "^1.3.4",
1516
"@tanstack/react-query": "^5.84.0",
17+
"@tanstack/react-query-devtools": "^5.87.4",
1618
"aos": "^2.3.4",
1719
"class-variance-authority": "^0.7.1",
1820
"clsx": "^2.1.1",

โ€Žsrc/app/layout.tsxโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { Metadata } from 'next';
22
import './globals.css';
33
import { QueryProvider } from '@/components/providers/query-provider';
44
import { HouseMemoProvider } from '@/components/providers/house-memo-provider';
5+
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
56
import { Toaster } from 'react-hot-toast';
67
import IcoLogoAll from '@assets/ico-logo-all.svg';
78
import IcoHouse from '@assets/login/lco-house.svg';
@@ -68,6 +69,7 @@ export default function RootLayout({
6869

6970
{children}
7071
<Toaster position="top-center" reverseOrder={false} />
72+
{process.env.NODE_ENV === 'development' && <ReactQueryDevtools initialIsOpen={false} />}
7173
</QueryProvider>
7274
</HouseMemoProvider>
7375
</body>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createQueryKeys } from '@lukemorales/query-key-factory';
2+
import { getChecklistInfo } from '@/services/checkList';
3+
import type { ChecklistResponse } from '@/types/checklist';
4+
5+
export const checklist = createQueryKeys('checklist', {
6+
all: null,
7+
info: {
8+
queryKey: null,
9+
queryFn: (): Promise<ChecklistResponse> => getChecklistInfo(),
10+
},
11+
});
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
import { useQuery } from '@tanstack/react-query';
2-
import { getChecklistInfo } from '@/services/checkList';
3-
import { ChecklistResponse } from '@/types/checklist';
2+
import { queries } from '@/queries';
43

54
export const useChecklistInfo = () => {
6-
return useQuery<ChecklistResponse>({
7-
queryKey: ['checklist'],
8-
queryFn: getChecklistInfo,
9-
});
5+
return useQuery(queries.checklist.info);
106
};

โ€Žsrc/queries/checkList/useSendRequiredItems.tsโ€Ž

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
22
import { sendRequiredItems } from '@/services/checkList';
33
import toast from 'react-hot-toast';
44
import { TOAST_STYLES } from '@/utils/toastStyles';
5+
import { queries } from '@/queries';
56

67
export function useSendRequiredItems() {
7-
const queryClient = useQueryClient();
8+
const qc = useQueryClient();
89

910
return useMutation({
1011
mutationFn: sendRequiredItems,
1112
onSuccess: () => {
1213
toast.success('ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.', TOAST_STYLES.success);
13-
queryClient.invalidateQueries({
14-
queryKey: ['checklist'],
14+
15+
qc.invalidateQueries({
16+
queryKey: queries.checklist.info.queryKey,
1517
});
1618
},
1719
onError: (error) => {

โ€Žsrc/queries/index.tsโ€Ž

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { mergeQueryKeys } from '@lukemorales/query-key-factory';
2+
import { checklist } from './checkList';
3+
4+
export const queries = mergeQueryKeys(checklist);
5+
// ํ•„์š” ์‹œ ์—ฌ๊ธฐ์— ๋‹ค๋ฅธ feature keys๋„ ์ถ”๊ฐ€: mergeQueryKeys(checklist, users, todos, ...)
6+
export type QueryKeys = typeof queries;

โ€Žyarn.lockโ€Ž

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,6 +1357,11 @@
13571357
"@jridgewell/resolve-uri" "^3.1.0"
13581358
"@jridgewell/sourcemap-codec" "^1.4.14"
13591359

1360+
"@lukemorales/query-key-factory@^1.3.4":
1361+
version "1.3.4"
1362+
resolved "https://registry.yarnpkg.com/@lukemorales/query-key-factory/-/query-key-factory-1.3.4.tgz#d14001dbd781b024df93ca73bd785db590924486"
1363+
integrity sha512-A3frRDdkmaNNQi6mxIshsDk4chRXWoXa05US8fBo4kci/H+lVmujS6QrwQLLGIkNIRFGjMqp2uKjC4XsLdydRw==
1364+
13601365
"@mdx-js/react@^3.0.0":
13611366
version "3.1.0"
13621367
resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed"
@@ -1873,6 +1878,18 @@
18731878
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.85.5.tgz#c4adc126bb3a927e4d60280bf3cf62210700147c"
18741879
integrity sha512-KO0WTob4JEApv69iYp1eGvfMSUkgw//IpMnq+//cORBzXf0smyRwPLrUvEe5qtAEGjwZTXrjxg+oJNP/C00t6w==
18751880

1881+
"@tanstack/query-devtools@5.87.3":
1882+
version "5.87.3"
1883+
resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.87.3.tgz#0cfff30823f837d6b9ead08f8d1b16459203fdb2"
1884+
integrity sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==
1885+
1886+
"@tanstack/react-query-devtools@^5.87.4":
1887+
version "5.87.4"
1888+
resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.87.4.tgz#278fe66c5263eff82178ad38f117a8c29d726714"
1889+
integrity sha512-JYcnVJBBW1DCPyNGM0S2CyrLpe6KFiL2gpYd/k9tAp62Du7+Y27zkzd+dKFyxpFadYaTxsx4kUA7YvnkMLVUoQ==
1890+
dependencies:
1891+
"@tanstack/query-devtools" "5.87.3"
1892+
18761893
"@tanstack/react-query@^5.84.0":
18771894
version "5.85.5"
18781895
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.85.5.tgz#50a1c02b50a59f93eba8f0d91d54d39c6c534c5e"

0 commit comments

Comments
ย (0)