티스토리 뷰
공부일지(TIL)/JS Framework + Library
[React Query] active하고 stale한 쿼리의 refetch
Alledy 2023. 1. 11. 23:55상황
- React Native에서 react navigation 스택을 사용함
- 퍼널 앞에서 호출한 쿼리를 퍼널 뒤에 새로운 화면에서 호출했는데 refetch하지 않고 기존 데이터를 재사용함.
- 캐시타임 내에 호출이 되어서 그런 줄 알고 cacheTime을 0으로 주고 했는데 동일한 현상 발생.
이유
- 일단 cacheTime은 inactive한 쿼리에 대해서만 의미가 있는데, 그 쿼리는 계속해서 active한 쿼리였다. 왜냐하면 스택 네비게이션에서는 계속해서 컴포넌트가 마운트된 상태로 쌓이기 때문이다.
- 챰고로 inactive 쿼리는 옵저버가 없는 쿼리를 의미하며, devtool로도 확인할 수 있고 Query Cache를 조회해서 옵저버 필드를 확인해볼 수도 있다.
- stale time은 디폴트가 0이므로 그 쿼리의 상태는 stale하고 active한 상태였다. devtool을 사용하면 확인하기 쉬웠겠지만 현재 react-native-debugger를 사용해서 react query devtool을 사용할 수 없었던 상태였다.
- 즉 cacheTime을 0으로 준 것은 어차피 active 쿼리니까 상관이 없었다.
- 그리고 프로젝트에서 사용하는 리액트 쿼리의 디폴트 옵션이 refetchOnMount: false 였다.
- 그래서 최초 쿼리한 스크린이 계속 마운트되어 있는 한 캐시타임과 관계 없이 refetch되지 않았다.
- 뒤로 가기를 눌러 최초 쿼리한 스크린을 언마운트 시킨 뒤 다시 마운트 시키면 이 때는 캐시타임이 지났는지에 따라 refetch를 한다.
Ref
refetching 조건
https://velog.io/@apro_xo/react-query-%EC%BA%90%EC%8B%B1feat.-refetch
important default
https://tanstack.com/query/latest/docs/react/guides/important-defaults
동일한 렌더링 주기에서는 같은 요청을 중복해서 보내지 않음 (active and stale query 케이스)
https://github.com/TanStack/query/discussions/2018#discussioncomment-645456
react navigation 라이프 사이클
https://reactnavigation.org/docs/3.x/navigation-lifecycle
옵저버가 없는 쿼리가 inactive 쿼리다
https://tkdodo.eu/blog/inside-react-query
'공부일지(TIL) > JS Framework + Library' 카테고리의 다른 글
[React Query] Tracked Query (0) | 2023.03.16 |
---|---|
[React] usePrevious hook (0) | 2023.02.13 |
ISR (Incremental Static Regeneration) (0) | 2022.11.28 |
[React Query] return invalidate queries (0) | 2022.03.29 |
[React] useReducer를 써야할까 useState를 써야할까? (0) | 2022.03.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Java
- youtube data api
- linkedlist
- this
- 자바
- Prefix Sums
- jQuery
- 개발 공부
- getter
- 깃
- useEffect
- react
- rxjs
- 인스턴스
- SQL
- Data Structure
- CSS
- 알고리즘
- JavaScript
- 리덕스
- Redux
- package.json
- 제네릭스
- GIT
- Session
- 포인터 변수
- c언어
- oracle
- Conflict
- til
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함