가수면

React Query v5 바뀐 점 본문

React/라이브러리

React Query v5 바뀐 점

니비앙 2023. 11. 11. 23:24

https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#callbacks-on-usequery-and-queryobserver-have-been-removed

 

Migrating to TanStack Query v5 | TanStack Query Docs

useQuery and friends used to have many overloads in TypeScript - different ways how the function can be invoked. Not only this was tough to maintain, type wise, it also required a runtime check to see which type the first and the second parameter, to corre

tanstack.com

https://tkdodo.eu/blog/breaking-react-querys-api-on-purpose

 

 

Breaking React Query's API on purpose

Why good API design matters, even if it means breaking existing APIs in the face of resistance.

tkdodo.eu

useQuery의 콜백들이 사라짐.

 

onSuccess를 사용해 상태를 업데이트하면 실제 onSuccess의 콜백이 실행되기 전의 data와 업데이트하려는 상태값이 불일치하는 경우가 발생하거나  (불필요한 리렌더링 사이클이 추가되는 것은 덤), staleTime 등을 설정한 경우 콜백이 실행되지 않아 제대로 동기화가 이루어지지 않을 수도 있는 문제 등으로 인해 없앴다고 한다.

 

아래는 바뀐 주요 내용들에 대해 정리한 글

 

useQuery의 콜백 사라짐

onError

전역 수준에서 관리하기

 

onSuccess

1. 되도록 파생값을 사용

 

2. data 가공 시엔 선택자 옵션을 활용

 

3. data 동기화, 기타 경우들에 useEffect를 사용(의존성 배열에 data와 isSuccess )

 

useMutation은 useQuery에서 발생하는 문제의 위험이 적고 변이, optimistic updates 등에 필요하므로 살려놨다고 함.

 

기타

cacheTime 이름 변경

gcTime으로 바뀜

 

useErrorBoundary 이름 변경

throwOnError으로 바뀜

 

isLoading 이름 변경

isPending으로 바뀜

 

useInfiniteQuery 사용법 변경

이제 initialPageParam를 설정해줘야 함
getNextPageParam 필수로 변경
maxPages라는 캐싱할 페이지 수를 지정하는 옵션 생김

 

useQuery 새로운 옵션 추가

combine 옵션 추가

  combine: (results) => {
    return ({
      data: results.map(result => result.data),
      pending: results.some(result => result.isPending),
    })

 

useQuery의 에러 타입이 unknown으로 바뀌어 타입스크립트 쓰기에 좀 더 쉬워졌다고 함

'React > 라이브러리' 카테고리의 다른 글

리액트에서 Socket.io 구현  (0) 2023.07.27
Zustand  (0) 2023.07.23
리액트에서 CKEditor5 사용  (0) 2023.07.21
리액트에서 네이버 스마트 에디터 구현  (0) 2023.07.20
[Sanity] CRUD  (0) 2023.06.29
Comments