Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- java
- Spring
- springboot
- storybook
- JavaSpring
- JPA
- designpatterns
- 오블완
- go
- React
- Gin
- ReactHooks
- typescript
- tanstackquery
- hook
- golang
- Chakra
- 웹애플리케이션서버
- backend
- javascript
- component
- satisfiles
- test
- css
- 티스토리챌린지
- frontend
- RTK
- Redux
- react-hook-form
Archives
- Today
- Total
bkdragon's log
[React Query] select 본문
리액트 쿼리의 select 옵션을 사용해봅시다! 아래는 공식문서의 설명이다.
This option can be used to transform or select a part of the data returned by the query function.
"이 옵션은 쿼리 함수에서 반환된 데이터의 일부를 변환하거나 선택하는 데 사용할 수 있습니다."
즉 useQuery 훅이 반환하는 데이터에서 특정 부분만 선택할 수 있도록 해주는 옵션이다. 필요한 데이터만을 선택한다는 점이 graphql과 비슷하다.
실제 적용한 코드를 봐보자.
const { data, isLoading } = useQuery("user", fetchUser, { select: data => ({ id: data.id, name: data.name })});
data에는 id와 name만 들어 있을 것이다.
select 옵션은 불필요한 데이터 전송을 감소하고 데이터의 형태 제어할 수 있게 해준다.
타입스크립에서 사용할 때는 useQuery의 제네릭의 3번째에 타입을 정의해줘야 한다. 아래는 개인 프로젝트에서 사용한 코드이다. 순서대로 통신을 통해서 받는 데이터 타입, 에러 타입, select 옵션을 거치고 난 뒤의 타입이다.
const { data : commentsData } = useQuery<CommentData, AxiosError, CommentSelectData>(['getComments', page ], () => fetcher({
method : 'get',
path : `/api/v1/articles/${router.query.id}/comments?limit=10&page=${page}`,
headers : {
Authorization : token
},
}), {
onSuccess : (data) => {
console.log('success getCommets', data);
},
staleTime: 5000,
keepPreviousData: true,
select : (data) => {
return {
list: data.list,
page : data.page,
totalPage : data.totalPage,
hasMore: data.totalPage > page
};
},
})
'React' 카테고리의 다른 글
커링과 HOC (0) | 2023.05.31 |
---|---|
[React-Query] 캐싱, 헷갈리는 부분 (0) | 2023.05.26 |
컴포넌트 분리하기 전략 (0) | 2023.05.24 |
React-Query useQuery를 Hook으로 사용하기 (0) | 2023.05.02 |
[React Query] refetchOnMount (0) | 2023.03.04 |