@@ -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
272273const 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
295296const 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// 예
316317const 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
393394const { 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
428429const { 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
449450const { 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
469470const { 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
491492const { 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
555556const { 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
577578const { 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 );
648649const { data: friends } = useQuery ([" friends" ], fetchFriends);
649650` ` `
650651
@@ -656,7 +657,7 @@ const { data: friends } = useQuery(["friends"], fetchFriends);
656657const 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
10011002const query = useQuery ([" super-heroes" ], {
1002- /* options */
1003+ /* ... options */
10031004});
10041005
10051006const queryClient = useQueryClient ();
10061007
10071008const 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
10631065const 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
12701274const queryClient = new QueryClient ({
@@ -1288,14 +1292,14 @@ function App() {
12881292` ` ` jsx
12891293// 사용 예시
12901294const useSuperHeroData = (heroId : string ) => {
1291- return useQuery ([" superheroes " , heroId]);
1295+ return useQuery ([" super-hero " , heroId]);
12921296};
12931297` ` `
12941298
12951299` ` ` jsx
12961300// 다음 형태 불가능
12971301const useSuperHeroData = (heroId : string ) => {
1298- return useQuery ([" superheroes " , heroId], () => getSuperHero (heroId));
1302+ return useQuery ([" super-hero " , heroId], () => getSuperHero (heroId));
12991303};
13001304` ` `
13011305
0 commit comments