1515
1616## TanStack Query(React) v5
1717
18- - โญ๏ธ TanStack Query(React)๊ฐ ` 23.10.17 ` v5๋ฅผ ๋ฆด๋ฆฌ์ฆ๋์ต๋๋ค. ํด๋น ๋ฌธ์๋ v5๊ธฐ์ค์ผ๋ก ์์ฑ๋์ด ์์ต๋๋ค.
18+ - โญ๏ธ TanStack Query(React) ` v5 ` ๊ฐ 23.10.17์ ๋ฆด๋ฆฌ์ฆ๋์ต๋๋ค. ํด๋น ๋ฌธ์๋ ` v5 ` ๊ธฐ์ค์ผ๋ก ์์ฑ๋์ด ์์ต๋๋ค.
1919- โญ๏ธ ๊ธฐ์กด ` v4 ` ๋ฌธ์๋ [ react query tutorial v4 ๋ฌธ์] ( https://github.com/ssi02014/react-query-tutorial/tree/master/README.v4.md ) ๋ฅผ ํ์ธํด์ฃผ์ธ์.
2020
2121![ แแ
ณแแ
ณแ
แ
ตแซแแ
ฃแบ 2023-10-18 แแ
ฉแแ
ฅแซ 2 09 09] ( https://github.com/ssi02014/react-query-tutorial/assets/64779472/84de2a61-7e39-4d52-aed8-b0ab67af95bc )
434312 . [ ์คํจํ ์ฟผ๋ฆฌ์ ๋ํด ์ฌ์์ฒญํ๋ retry] ( #retry )
444413 . [ onSuccess, onError, onSettled] ( #onsuccess-onerror-onsettled ) - ๐ก ** v5 @Deprecated **
454514 . [ select๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ๋ณํ] ( #select )
46- 15 . [ ์ฟผ๋ฆฌ๊ฐ pending์ํ ๋์ ๋ณด์ฌ ์ค ์ ์์ placeholderData] ( #placeholderdata )
46+ 15 . [ ์ฟผ๋ฆฌ๊ฐ pending ์ํ์ธ ๋์ ๋ณด์ฌ ์ค ์ ์ placeholderData] ( #placeholderdata )
474716 . [ Paginated ๊ตฌํ์ ์ ์ฉํ keepPreviousData] ( #keepPreviousData ) - ๐ก ** v5 @Deprecated **
484817 . [ ์ฟผ๋ฆฌ๋ฅผ ๋ณ๋ ฌ(Parallel) ์์ฒญํ ์ ์๋ useQueries] ( #parallel )
494918 . [ ์ข
์ ์ฟผ๋ฆฌ(Dependent Queries)] ( #dependent-queries )
@@ -152,7 +152,7 @@ function App() {
152152- react-query๋ ` ์ ์ฉ devtools ` ๋ฅผ ์ ๊ณตํ๋ค.
153153- devtools๋ฅผ ์ฌ์ฉํ๋ฉด React Query์ ๋ชจ๋ ๋ด๋ถ ๋์์ ` ์๊ฐํ ` ํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ` ๋๋ฒ๊น
์๊ฐ์ ์ ์ฝ ` ํ ์ ์๋ค.
154154- devtools๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ` process.env.NODE_ENV === 'development' ` ์ธ ๊ฒฝ์ฐ์๋ง ์คํ๋๋ค, ์ฆ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐํ๊ฒฝ์์๋ง ์๋ํ๋ฏ๋ก ์ค์ ๋์ด์์ผ๋ฏ๋ก, ํ๋ก์ ํธ ๋ฐฐํฌ ์์ Devtools ์ฝ์
์ฝ๋๋ฅผ ์ ๊ฑฐํด์ค ํ์๊ฐ ์๋ค.
155- - ** devtools ์ฌ์ฉํ๊ธฐ ์ํด ๋ณ๋์ ํจํค์ง ์ค์น๊ฐ ํ์ํ๋ค.**
155+ - ** devtools๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ณ๋์ ํจํค์ง ์ค์น๊ฐ ํ์ํ๋ค.**
156156
157157``` bash
158158$ npm i @tanstack/react-query-devtools
@@ -707,7 +707,7 @@ const combinedQueries = useQueries({
707707```
708708
709709- combinedQueries๋ ` data ` ์ ` pending ` ํ๋กํผํฐ๋ฅผ ๊ฐ๋๋ค.
710- - _ Note_ : ์ฐธ๊ณ ๋ก ๊ฒฐํฉํ๋ฉด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๋๋จธ์ง ๋ค๋ฅธ ํ๋กํผํฐ๋ค์ ์์ค ๋๋ค .
710+ - _ Note_ : ์ฐธ๊ณ ๋ก ๊ฒฐํฉํ๋ฉด ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๋๋จธ์ง ๋ค๋ฅธ ํ๋กํผํฐ๋ค์ ์์ค๋๋ค .
711711
712712<br />
713713
@@ -716,7 +716,7 @@ const combinedQueries = useQueries({
716716[ ๋ชฉ์ฐจ ์ด๋] ( #์ฃผ์-์ปจ์
-๋ฐ-๊ฐ์ด๋-๋ชฉ์ฐจ )
717717
718718- [ Dependent Queries ๊ณต์ ๋ฌธ์] ( https://tanstack.com/query/v5/docs/react/guides/dependent-queries )
719- - ` ์ข
์ ์ฟผ๋ฆฌ ` ๋ ์ด๋ค A๋ผ๋ ์ฟผ๋ฆฌ๊ฐ ์๋๋ฐ ์ด A์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ ์ ์ฌ์ ์ ์๋ฃ๋์ด์ผ ํ๋ B ์ฟผ๋ฆฌ๊ฐ ์๋๋ฐ, ์ด๋ฌํ B์ฟผ๋ฆฌ์ ์์กดํ๋ A์ฟผ๋ฆฌ๋ฅผ ์ข
์ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ค.
719+ - ` ์ข
์ ์ฟผ๋ฆฌ ` ๋ ์ด๋ค A๋ผ๋ ์ฟผ๋ฆฌ๊ฐ ์๋๋ฐ ์ด A ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ ์ ์ฌ์ ์ ์๋ฃ๋์ด์ผ ํ๋ B ์ฟผ๋ฆฌ๊ฐ ์๋๋ฐ, ์ด๋ฌํ B ์ฟผ๋ฆฌ์ ์์กดํ๋ A ์ฟผ๋ฆฌ๋ฅผ ์ข
์ ์ฟผ๋ฆฌ๋ผ๊ณ ํ๋ค.
720720- react-query์์๋ ` enabled ` ์ต์
์ ํตํด ์ข
์ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
721721
722722``` tsx
@@ -744,7 +744,7 @@ const { data: courses } = useQuery({
744744
745745- useQueryClient๋ ` QueryClient ` ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค.
746746- ` QueryClient ` ๋ ์บ์์ ์ํธ์์ฉํ๋ค.
747- - QueryClient๋ ๋ค์ ๋ฌธ์์์ ์์ธํ๊ฒ ๋ค๋ฃฌ๋ค
747+ - QueryClient๋ ๋ค์ ๋ฌธ์์์ ์์ธํ๊ฒ ๋ค๋ฃฌ๋ค.
748748 - [ QueryClient] ( https://github.com/ssi02014/react-query-tutorial/tree/master/document/queryClient.md )
749749
750750``` tsx
@@ -794,7 +794,7 @@ const useSuperHeroData = (heroId: string) => {
794794
795795- [ prefetching ๊ณต์ ๋ฌธ์] ( https://tanstack.com/query/v5/docs/react/guides/prefetching )
796796- prefetch๋ ๋ง ๊ทธ๋๋ก ๋ฏธ๋ฆฌ fetchํด์ค๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
797- - ๋น๋๊ธฐ ์์ฒญ์ ๋ฐ์ดํฐ ์์ด ํด ์๋ก ๋ฐ์์ค๋ ์๋๊ฐ ๋๋ฆฌ๊ณ , ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค . ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ์์์ ์บ์ฑํด๋์ผ๋ฉด? ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ์ ์ ์ฌ์ฉ์๊ฐ ์บ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ด ` UX์ ์ข์ ์ํฅ ` ์ ์ค ์ ์๋ค.
797+ - ๋น๋๊ธฐ ์์ฒญ์ ๋ฐ์ดํฐ ์์ด ํด์๋ก ๋ฐ์์ค๋ ์๋๊ฐ ๋๋ฆฌ๊ณ , ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค . ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ์์์ ์บ์ฑํด๋์ผ๋ฉด? ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ์ ์ ์ฌ์ฉ์๊ฐ ์บ์ฑ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ด ` UX์ ์ข์ ์ํฅ ` ์ ์ค ์ ์๋ค.
798798 - ์๋ฅผ ๋ค์ด ํ์ด์ง๋ค์ด์
์ ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ํ์ด์ง1์์ ํ์ด์ง2๋ก ์ด๋ํ์ ๋ ํ์ด์ง3์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ์๋๋ ๊ฒ์ด๋ค!
799799- react query์์๋ ` queryClient.prefetchQuery ` ์ ํตํด์ prefetch ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
800800
@@ -803,7 +803,7 @@ const useSuperHeroData = (heroId: string) => {
803803``` tsx
804804const prefetchNextPosts = async (nextPage : number ) => {
805805 const queryClient = useQueryClient ();
806- // ํด๋น ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ์ผ๋ฐ ์ฟผ๋ฆฌ๋ค์ฒ๋ผ ์บ์ฑ๋๋ค .
806+ // ํด๋น ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ์ผ๋ฐ ์ฟผ๋ฆฌ๋ค์ฒ๋ผ ์บ์ฑ ๋๋ค .
807807 await queryClient .prefetchQuery ({
808808 queryKey: [" posts" , nextPage ],
809809 queryFn : () => fetchPosts (nextPage ),
@@ -829,7 +829,7 @@ useEffect(() => {
829829
830830- infinite ์ฟผ๋ฆฌ๋ ๋ฐ๋ก ์๋์ ๋์ค๊ฒ ์ง๋ง ์ผ๋ฐ ์ฟผ๋ฆฌ๋ค์ฒ๋ผ infinite ์ฟผ๋ฆฌ๋ prefetchํ ์ ์๋ค.
831831- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฟผ๋ฆฌ์ ` ์ฒซ ๋ฒ์งธ ํ์ด์ง๋ง prefetch ` ๋๋ฉฐ, ๊ทธ ์ด์์ prefetchํ๋ ค๋ฉด ` pages ์ต์
` ์ ํ์ฉํด์ผ ๋๋ค.
832- - ์ด ๊ฒฝ์ฐ์๋ ` getNextPageParam ` ํจ์๋ฅผ ๋ฌด์กฐ๊ฑด ์ ๊ณตํด์ค์ผ ํ๋ค๋ ์ ์ ์ฃผ์ํ์
832+ - ์ด ๊ฒฝ์ฐ์๋ ` getNextPageParam ` ํจ์๋ฅผ ๋ฌด์กฐ๊ฑด ์ ๊ณตํด์ค์ผ ํ๋ค๋ ์ ์ ์ฃผ์ํ์.
833833
834834``` tsx
835835const prefetchTodos = async () => {
0 commit comments