Skip to content

Commit f6d05d2

Browse files
committed
fix: 예제 queryKey 싱크맞춤
1 parent 6fc183d commit f6d05d2

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

README.md

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ result.isLoading
249249

250250
```jsx
251251
// 실제 예제
252-
const getSuperHero = useCallback(() => {
252+
const getAllSuperHero = useCallback(() => {
253253
return axios.get("http://localhost:4000/superheroes");
254254
}, []);
255255

256-
const { data, isLoading } = useQuery(["super-heroes"], getSuperHero);
256+
const { data, isLoading } = useQuery(["super-heroes"], getAllSuperHero);
257257
```
258258

259259
- useQuery는 기본적으로 3개의 인자를 받는다. 첫 번째 인자가 `queryKey(필수)`, 두 번째 인자가 `queryFn(필수)`, 세 번째 인자가 `options(optional)`이다.
@@ -264,14 +264,15 @@ const { data, isLoading } = useQuery(["super-heroes"], getSuperHero);
264264

265265
```jsx
266266
// (1)
267-
const fetchSuperHero = ({ queryKey }: any) => {
267+
const getSuperHero = ({ queryKey }: any) => {
268268
const heroId = queryKey[1]; // queryKey: ['super-hero', '3']
269+
269270
return axios.get(`http://localhost:4000/superheroes/${heroId}`);
270271
};
271272

272273
const useSuperHeroData = (heroId: string) => {
273274
// 해당 쿼리는 heroId에 의존
274-
return useQuery(["super-hero", heroId], fetchSuperHero);
275+
return useQuery(["super-hero", heroId], getSuperHero);
275276
};
276277
```
277278

@@ -288,19 +289,19 @@ const useSuperHeroData = (heroId: string) => {
288289

289290
```jsx
290291
// (2)
291-
const fetchSuperHero = (heroId: string) => {
292+
const getSuperHero = (heroId: string) => {
292293
return axios.get(`http://localhost:4000/superheroes/${heroId}`);
293294
};
294295

295296
const useSuperHeroData = (heroId: string) => {
296-
return useQuery(["super-hero", heroId], () => fetchSuperHero(heroId));
297+
return useQuery(["super-hero", heroId], () => getSuperHero(heroId));
297298
};
298299
```
299300

300301
- useQuery의 두 번째 인자인 queryFn는 `Promise`를 반환하는 함수를 넣어야한다.
301302
- 참고로, queryKey의 예제와 queryFn 예제가 `약간 차이점`이 있다.
302-
- queryKey 예제는 2번째 queryFn에 fetchSuperHero 함수를 바로 넘겨주고, fetchSuperHero에서 매개 변수로 객체를 받아와 해당 객체의 queryKey를 활용하고 있다.
303-
- queryFn 예제는 그냥 2번째 queryFn에 화살표 함수를 사용하고, fetchSuperHero의 인자로 heroId를 넘겨주고 있다.
303+
- queryKey 예제는 2번째 queryFn에 getSuperHero 함수를 바로 넘겨주고, getSuperHero에서 매개 변수로 객체를 받아와 해당 객체의 queryKey를 활용하고 있다.
304+
- queryFn 예제는 그냥 2번째 queryFn에 화살표 함수를 사용하고, getSuperHero의 인자로 heroId를 넘겨주고 있다.
304305
- 해당 두 가지 방법은 모두 알아야되고, 결과는 동일하다.
305306

306307
<br />
@@ -314,7 +315,7 @@ const useSuperHeroData = (heroId: string) => {
314315
```js
315316
//
316317
const useSuperHeroData = (heroId: string) => {
317-
return useQuery(["super-hero", heroId], () => fetchSuperHero(heroId), {
318+
return useQuery(["super-hero", heroId], () => getSuperHero(heroId), {
318319
staleTime: 3000,
319320
cacheTime: 5000,
320321
retry: 1,
@@ -391,7 +392,7 @@ const { status, isLoading, isError, error, data, isFetching, ... } = useQuery(
391392

392393
```jsx
393394
const { isLoading, isFetching, data, isError, error } = useQuery(
394-
["super-heroes"],
395+
["super-hero"],
395396
getSuperHero,
396397
{
397398
cacheTime: 3000,
@@ -426,7 +427,7 @@ const { isLoading, isFetching, data, isError, error } = useQuery(
426427

427428
```jsx
428429
const { isLoading, isFetching, data, isError, error } = useQuery(
429-
["super-heroes"],
430+
["super-hero"],
430431
getSuperHero,
431432
{
432433
refetchOnMount: true,
@@ -447,7 +448,7 @@ const { isLoading, isFetching, data, isError, error } = useQuery(
447448

448449
```jsx
449450
const { isLoading, isFetching, data, isError, error } = useQuery(
450-
["super-heroes"],
451+
["super-hero"],
451452
getSuperHero,
452453
{
453454
refetchOnWindowFocus: true,
@@ -467,7 +468,7 @@ const { isLoading, isFetching, data, isError, error } = useQuery(
467468

468469
```jsx
469470
const { isLoading, isFetching, data, isError, error } = useQuery(
470-
["super-heroes"],
471+
["super-hero"],
471472
getSuperHero,
472473
{
473474
refetchInterval: 2000,
@@ -489,7 +490,7 @@ const { isLoading, isFetching, data, isError, error } = useQuery(
489490

490491
```jsx
491492
const { isLoading, isFetching, data, isError, error, refetch } = useQuery(
492-
["super-heroes"],
493+
["super-hero"],
493494
getSuperHero,
494495
{
495496
enabled: false,
@@ -553,7 +554,7 @@ const onSettled = useCallback(() => {
553554
}, []);
554555

555556
const { isLoading, isFetching, data, isError, error, refetch } = useQuery(
556-
["super-heroes"],
557+
["super-hero"],
557558
getSuperHero,
558559
{
559560
onSuccess,
@@ -575,7 +576,7 @@ const { isLoading, isFetching, data, isError, error, refetch } = useQuery(
575576
576577
```jsx
577578
const { isLoading, isFetching, data, isError, error, refetch } = useQuery(
578-
["super-heroes"],
579+
["super-hero"],
579580
getSuperHero,
580581
{
581582
onSuccess,
@@ -644,7 +645,7 @@ function Todos() {
644645
[목차 이동](#주요-컨셉-및-가이드-목차)
645646
646647
```jsx
647-
const { data: superHeroes } = useQuery(["super-heroes"], fetchSuperHeroes);
648+
const { data: superHeroes } = useQuery(["super-hero"], getSuperHero);
648649
const { data: friends } = useQuery(["friends"], fetchFriends);
649650
```
650651
@@ -656,7 +657,7 @@ const { data: friends } = useQuery(["friends"], fetchFriends);
656657
const queryResults = useQueries(
657658
heroIds.map((id) => ({
658659
queryKey: ["super-hero", id],
659-
queryFn: () => fetchSuperHero(id),
660+
queryFn: () => getSuperHero(id),
660661
}))
661662
);
662663
/*
@@ -999,13 +1000,14 @@ try {
9991000
10001001
```jsx
10011002
const query = useQuery(["super-heroes"], {
1002-
/* options */
1003+
/* ...options */
10031004
});
10041005

10051006
const queryClient = useQueryClient();
10061007

10071008
const onCancelQuery = (e) => {
10081009
e.preventDefault();
1010+
10091011
queryClient.cancelQueries(["super-heroes"]);
10101012
};
10111013

@@ -1062,6 +1064,7 @@ queryClient.invalidateQueries(["super-heroes", "posts", "comment"]);
10621064
```tsx
10631065
const useAddSuperHeroData = () => {
10641066
const queryClient = useQueryClient();
1067+
10651068
return useMutation(addSuperHero, {
10661069
onSuccess(data) {
10671070
queryClient.setQueryData(["super-heroes"], (oldData: any) => {
@@ -1262,9 +1265,10 @@ function App() {
12621265
12631266
```jsx
12641267
// 기본 쿼리 함수
1265-
const getSuperHero = async ({ queryKey }: any) => {
1268+
const getSuperHero = ({ queryKey }: any) => {
12661269
const heroId = queryKey[1];
1267-
return await axios.get(`http://localhost:4000/superheroes/${heroId}`);
1270+
1271+
return axios.get(`http://localhost:4000/superheroes/${heroId}`);
12681272
};
12691273

12701274
const queryClient = new QueryClient({
@@ -1288,14 +1292,14 @@ function App() {
12881292
```jsx
12891293
// 사용 예시
12901294
const useSuperHeroData = (heroId: string) => {
1291-
return useQuery(["superheroes", heroId]);
1295+
return useQuery(["super-hero", heroId]);
12921296
};
12931297
```
12941298
12951299
```jsx
12961300
// 다음 형태 불가능
12971301
const useSuperHeroData = (heroId: string) => {
1298-
return useQuery(["superheroes", heroId], () => getSuperHero(heroId));
1302+
return useQuery(["super-hero", heroId], () => getSuperHero(heroId));
12991303
};
13001304
```
13011305

0 commit comments

Comments
 (0)