Skip to content

Commit 65eb026

Browse files
committed
feat: Default Query Function 내용 추가
1 parent 323f6a2 commit 65eb026

1 file changed

Lines changed: 43 additions & 1 deletion

File tree

README.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
26. [사용자 경험(UX)을 올려주는 Optimistic Updates(낙관적 업데이트)](#optimistic-update)
5151
27. [에러가 발생했을 때 Fallback UI를 선언적으로 보여주기 위한 ErrorBoundary + useQueryErrorResetBoundary](#usequeryerrorresetboundary)
5252
28. [서버 로딩중일 때 Fallback UI를 선언적으로 보여주기 위한 Suspense](#suspense)
53-
29. [리액트 쿼리에 타입스크립트 적용](#react-query-typescript)
53+
29. [앱의 기본 쿼리를 설정하는 Default Query Function](#default-query-function)
54+
30. [리액트 쿼리에 타입스크립트 적용](#react-query-typescript)
5455

5556
<br />
5657

@@ -1252,6 +1253,47 @@ function App() {
12521253
12531254
<br />
12541255
1256+
## Default Query Function
1257+
1258+
[목차 이동](#주요-컨셉-및-가이드-목차)
1259+
1260+
- 앱 전체에서 사용하는 동일한 쿼리에서 `queryKey`를 사용해 가져와야 할 데이터를 식별하고 싶다면 `QueryClient``queryFn` 옵션을 통해 Default Query Function을 지정해 줄 수 있다.
1261+
- [Default Query Function v4](https://tanstack.com/query/v4/docs/react/guides/default-query-function)
1262+
1263+
```jsx
1264+
// 기본 쿼리 함수
1265+
const getSuperHero = async ({ queryKey }: any) => {
1266+
return await axios.get(`http://localhost:4000/${queryKey[0]}`);
1267+
};
1268+
1269+
const queryClient = new QueryClient({
1270+
defaultOptions: {
1271+
queries: {
1272+
queryFn: getSuperHero,
1273+
},
1274+
},
1275+
});
1276+
```
1277+
1278+
- `QueryClient`에 앱 전체에서 사용할 쿼리 함수를 지정해 준다.
1279+
1280+
```jsx
1281+
// 사용 예시 (1)
1282+
const useSuperHeroData = () => {
1283+
return useQuery(["superheroes"]); // 2번째 인자에 queryFn을 넣지 않는다.
1284+
};
1285+
1286+
// 사용 예시 (2)
1287+
const useSuperHeroDetailData = (heroId: string) => {
1288+
return useQuery([`superheroes/${heroId}`]);
1289+
};
1290+
```
1291+
1292+
- useQuery의 첫 번째 인자로 `queryKey`만 넣어주면 두 번째 인자에 들어갈 `queryFn`은 자동으로 설정된 기본 쿼리 함수가 들어간다.
1293+
- 일반적으로 `useQuery`를 사용할 때와 달리 `queryFn`을 지정하지 않기에 쿼리 함수에 직접 인자를 넣어주는 형태의 사용은 불가능하다.
1294+
1295+
<br />
1296+
12551297
## React Query Typescript
12561298
12571299
[목차 이동](#주요-컨셉-및-가이드-목차)

0 commit comments

Comments
 (0)