Skip to content

Commit dc4d06a

Browse files
Create file query key
1 parent 7a8bd0c commit dc4d06a

File tree

3 files changed

+37
-19
lines changed

3 files changed

+37
-19
lines changed

src/common/queryHooks/home/index.ts

+33-19
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,26 @@ import {useMutation, useQuery} from 'react-query';
22
import {HomeApi} from '../../apis';
33
import queryClient from '../../helpers/queryClient';
44
import {IItemHome} from '../../models';
5+
import {HOME_SCREEN} from '../queryKey';
56

67
const useHomeFetchQuery = () =>
7-
useQuery('home', () => HomeApi.fetchData(1, 30));
8+
useQuery(HOME_SCREEN.HOME, () => HomeApi.fetchData(1, 30));
89
const useAddQuery = () =>
910
useMutation((newTodo: string) => HomeApi.createData(newTodo), {
1011
// When mutate is called:
1112
onMutate: async (newTodo: string) => {
1213
// Cancel any outgoing refetches (so they don't overwrite our optimistic update)
13-
await queryClient.cancelQueries('home');
14+
await queryClient.cancelQueries(HOME_SCREEN.HOME);
1415

1516
// Snapshot the previous value
16-
const previousTodos = queryClient.getQueryData<IItemHome[]>('home');
17+
const previousTodos = queryClient.getQueryData<IItemHome[]>(
18+
HOME_SCREEN.HOME,
19+
);
1720

1821
// Optimistically update to the new value
1922
if (previousTodos) {
2023
queryClient.setQueryData<IItemHome[]>(
21-
'home',
24+
HOME_SCREEN.HOME,
2225
(old: any): IItemHome[] => [...old, newTodo],
2326
);
2427
}
@@ -31,12 +34,15 @@ const useAddQuery = () =>
3134
const defaultMutationOptions = {
3235
onError: (err: unknown, variables: any, context: any) => {
3336
if (context?.previousTodos) {
34-
queryClient.setQueryData<IItemHome[]>('home', context.previousTodos);
37+
queryClient.setQueryData<IItemHome[]>(
38+
HOME_SCREEN.HOME,
39+
context.previousTodos,
40+
);
3541
}
3642
},
3743
// Always refetch after error or success:
3844
onSettled: () => {
39-
queryClient.invalidateQueries('home');
45+
queryClient.invalidateQueries(HOME_SCREEN.HOME);
4046
},
4147
};
4248

@@ -45,15 +51,19 @@ const useDeleteQuery = () =>
4551
// When mutate is called:
4652
onMutate: async (id: number) => {
4753
// Cancel any outgoing refetches (so they don't overwrite our optimistic update)
48-
await queryClient.cancelQueries('home');
54+
await queryClient.cancelQueries(HOME_SCREEN.HOME);
4955

5056
// Snapshot the previous value
51-
const previousTodos = queryClient.getQueryData<IItemHome[]>('home');
57+
const previousTodos = queryClient.getQueryData<IItemHome[]>(
58+
HOME_SCREEN.HOME,
59+
);
5260

5361
// Optimistically update to the new value
5462
if (previousTodos) {
55-
queryClient.setQueryData<IItemHome[]>('home', (old: any): IItemHome[] =>
56-
old.filter((item: IItemHome) => item.id !== id),
63+
queryClient.setQueryData<IItemHome[]>(
64+
HOME_SCREEN.HOME,
65+
(old: any): IItemHome[] =>
66+
old.filter((item: IItemHome) => item.id !== id),
5767
);
5868
}
5969

@@ -63,32 +73,36 @@ const useDeleteQuery = () =>
6373
});
6474

6575
const useGetDetailQuery = (todoId: number) =>
66-
useQuery(['home', todoId], () => HomeApi.getDetail(todoId), {
76+
useQuery([HOME_SCREEN.HOME, todoId], () => HomeApi.getDetail(todoId), {
6777
initialData: () =>
6878
queryClient
69-
.getQueryData<IItemHome[]>('home')
79+
.getQueryData<IItemHome[]>(HOME_SCREEN.HOME)
7080
?.find((d: IItemHome) => d.id === todoId),
7181
});
7282

7383
const useUpdateListItem = () =>
7484
useMutation((updates: IItemHome) => HomeApi.updateItem(updates), {
7585
// When mutate is called:
7686
onMutate: async (updates: IItemHome) => {
77-
await queryClient.cancelQueries('home');
87+
await queryClient.cancelQueries(HOME_SCREEN.HOME);
7888
// Snapshot the previous value
79-
const previousTodos = queryClient.getQueryData<IItemHome[]>('home');
89+
const previousTodos = queryClient.getQueryData<IItemHome[]>(
90+
HOME_SCREEN.HOME,
91+
);
8092

8193
// Optimistically update to the new value
8294

8395
if (previousTodos) {
84-
queryClient.setQueryData<IItemHome[]>('home', (old: any): IItemHome[] =>
85-
old.map((item: IItemHome) => {
86-
return item.id === updates.id ? {...item, ...updates} : item;
87-
}),
96+
queryClient.setQueryData<IItemHome[]>(
97+
HOME_SCREEN.HOME,
98+
(old: any): IItemHome[] =>
99+
old.map((item: IItemHome) => {
100+
return item.id === updates.id ? {...item, ...updates} : item;
101+
}),
88102
);
89103
}
90104

91-
return () => queryClient.setQueryData('home', previousTodos);
105+
return () => queryClient.setQueryData(HOME_SCREEN.HOME, previousTodos);
92106
},
93107
...defaultMutationOptions,
94108
});

src/common/queryHooks/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from './home';
2+
export * from './queryKey';

src/common/queryHooks/queryKey.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export enum HOME_SCREEN {
2+
HOME = 'Home',
3+
}

0 commit comments

Comments
 (0)