Skip to content

Commit 1a68d0d

Browse files
committed
feat: useInfiniteQuery Typescript Example ์ถ”๊ฐ€
1 parent 0d40180 commit 1a68d0d

1 file changed

Lines changed: 65 additions & 12 deletions

File tree

โ€ŽREADME.mdโ€Ž

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,7 +1317,7 @@ const useSuperHeroData = (heroId: string) => {
13171317
1. TQueryFnData: useQuery๋กœ ์‹คํ–‰ํ•˜๋Š” query function์˜ `์‹คํ–‰ ๊ฒฐ๊ณผ`์˜ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
13181318
2. TError: query function์˜ `error` ํ˜•์‹์„ ์ •ํ•˜๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
13191319
3. TData: useQuery์˜ `data์— ๋‹ด๊ธฐ๋Š” ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ`์˜ ํƒ€์ž…์„ ๋งํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ œ๋„ค๋ฆญ๊ณผ์˜ ์ฐจ์ด์ ์€ `select`์™€ ๊ฐ™์ด query function์˜ ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ•ธ๋“ค๋ง์„ ํ†ตํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค.
1320-
4. TQueryKey: useQuery์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ฃผ๋Š” `queryKey`์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
1320+
4. TQueryKey: useQuery์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž `queryKey`์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
13211321
13221322
```ts
13231323
// useQuery์˜ ํƒ€์ž…
@@ -1342,11 +1342,14 @@ const { data } = useQuery<
13421342
return superHeroNames;
13431343
},
13441344
});
1345-
```
13461345

1347-
- data: `SuperHeroName[]`
1348-
- error: `AxiosError<any, any>`
1349-
- select: `(data: SuperHeros): SuperHeroName[]`
1346+
/**
1347+
์ฃผ์š” ํƒ€์ž…
1348+
* data: `SuperHeroName[]`
1349+
* error: `AxiosError<any, any>`
1350+
* select: `(data: SuperHeros): SuperHeroName[]`
1351+
*/
1352+
```
13501353

13511354
<br />
13521355

@@ -1383,13 +1386,63 @@ const { mutate } = useMutation<Todo, AxiosError, number, number>(postTodo, {
13831386
const onClick = () => {
13841387
mutate(5);
13851388
};
1386-
```
13871389

1388-
- data: `Todo`
1389-
- error: `AxiosError<any, any>`
1390-
- onSuccess: `(res: Todo, id: number, nextId: number)`
1391-
- onError: `(err: AxiosError, id: number, nextId: number)`
1392-
- onMutate: `(id: number)`
1393-
- onSettled: `(res: Todo, err: AxiosError, id: number, nextId: number)`,
1390+
/**
1391+
์ฃผ์š” ํƒ€์ž…
1392+
* data: `Todo`
1393+
* error: `AxiosError<any, any>`
1394+
* onSuccess: `(res: Todo, id: number, nextId: number)`
1395+
* onError: `(err: AxiosError, id: number, nextId: number)`
1396+
* onMutate: `(id: number)`
1397+
* onSettled: `(res: Todo, err: AxiosError, id: number, nextId: number)`,
1398+
*/
1399+
```
13941400
13951401
<br />
1402+
1403+
### useInfiniteQuery
1404+
1405+
ํ˜„์žฌ useInfiniteQuery ๊ฐ–๊ณ  ์žˆ๋Š” ์ œ๋„ค๋ฆญ์€ `4๊ฐœ`์ด๋ฉฐ, useQuery์™€ ์œ ์‚ฌํ•˜๋‹ค.
1406+
1407+
1. TQueryFnData: useInfiniteQuery๋กœ ์‹คํ–‰ํ•˜๋Š” query function์˜ `์‹คํ–‰ ๊ฒฐ๊ณผ`์˜ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
1408+
2. TError: query function์˜ `error` ํ˜•์‹์„ ์ •ํ•˜๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
1409+
3. TData: useInfiniteQuery์˜ `data์— ๋‹ด๊ธฐ๋Š” ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ`์˜ ํƒ€์ž…์„ ๋งํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ œ๋„ค๋ฆญ๊ณผ์˜ ์ฐจ์ด์ ์€ `select`์™€ ๊ฐ™์ด query function์˜ ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ•ธ๋“ค๋ง์„ ํ†ตํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค.
1410+
4. TQueryKey: useInfiniteQuery์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž `queryKey`์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‹ค.
1411+
1412+
```ts
1413+
export function useInfiniteQuery<
1414+
TQueryFnData = unknown,
1415+
TError = unknown,
1416+
TData = TQueryFnData,
1417+
TQueryKey extends QueryKey = QueryKey
1418+
>
1419+
```
1420+
1421+
```tsx
1422+
const fetchColors = async ({ pageParam }) => {
1423+
const { page = 1, etc } = pageParam;
1424+
1425+
return await axios.get(`http://localhost:4000/colors?_limit=2&_page=${page}`);
1426+
};
1427+
1428+
const { mutate } = useInfiniteQuery<Colors, AxiosError, Colors, ["colors"]>(
1429+
["colors"],
1430+
({ pageParam = 0 }) => {
1431+
fetchColors({ page: pageParam });
1432+
},
1433+
{
1434+
getNextPageParam: (lastPage) => {
1435+
return allPages.length < 4 && allPages.length + 1;
1436+
},
1437+
...options,
1438+
}
1439+
);
1440+
1441+
/**
1442+
์ฃผ์š” ํƒ€์ž…
1443+
* data: InfiniteData<ModelListResponse>
1444+
* error: `AxiosError<any, any>`
1445+
* select: InfiniteData<ModelListResponse>
1446+
* getNextPageParam: GetNextPageParamFunction<Colors>
1447+
*/
1448+
```

0 commit comments

Comments
ย (0)