@@ -743,20 +743,20 @@ const queryClient = useQueryClient();
743743- initialData ์ต์
์ ํตํด์ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ฑ์ฐ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๊ธฐ ๋ก๋ ์ํ๋ ๊ฑด๋๋ธ ์๋ ์๋ค.
744744
745745` ` ` tsx
746- const useSuperHeroData = (heroId : string ) => {
747- const queryClient = useQueryClient ();
748- return useQuery ([' super-hero' , heroId ], fetchSuperHero , {
749- initialData : () => {
750- const queryData = queryClient .getQueryData ([' super-heroes' ]) as any ;
751- const hero = queryData ?.data ?.find (
752- (hero : Hero ) => hero .id === parseInt (heroId )
753- );
754-
755- if (hero ) return { data: hero };
756- return undefined ;
757- },
758- });
759- };
746+ const useSuperHeroData = (heroId : string ) => {
747+ const queryClient = useQueryClient ();
748+ return useQuery ([" super-hero" , heroId ], fetchSuperHero , {
749+ initialData : () => {
750+ const queryData = queryClient .getQueryData ([" super-heroes" ]) as any ;
751+ const hero = queryData ?.data ?.find (
752+ (hero : Hero ) => hero .id === parseInt (heroId )
753+ );
754+
755+ if (hero ) return { data: hero };
756+ return undefined ;
757+ },
758+ });
759+ };
760760` ` `
761761
762762<br />
@@ -1178,7 +1178,7 @@ interface Props {
11781178 children: React .ReactNode ;
11791179}
11801180
1181- const QueryErrorBoundary = ({ children , fallback }: Props ) => {
1181+ const QueryErrorBoundary = ({ children }: Props ) => {
11821182 const { reset } = useQueryErrorResetBoundary (); // (*)
11831183
11841184 return (
@@ -1228,7 +1228,7 @@ function App() {
12281228
12291229[๋ชฉ์ฐจ ์ด๋](#์ฃผ์-์ปจ์
-๋ฐ-๊ฐ์ด๋-๋ชฉ์ฐจ)
12301230
1231- - ErrorBoundary๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ณด์ฌ์ฃผ๋ Fallback UI๋ฅผ ` ์ ์ธ์ ` ์ผ๋ก ์์ฑํ ์ ์๊ณ , ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ Suspense์๋ ๊ฒฐํฉํด์ ` ์๋ฒ ํต์ ์ํ๊ฐ ๋ก๋ฉ์ค` ์ผ ๋ Fallback UI๋ฅผ ๋ณด์ฌ์ค ์ ์๊ฒ ์ ์ธ์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
1231+ - ErrorBoundary๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ณด์ฌ์ฃผ๋ Fallback UI๋ฅผ ` ์ ์ธ์ ` ์ผ๋ก ์์ฑํ ์ ์๊ณ , ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ ` Suspense ` ์๋ ๊ฒฐํฉํด์ ` ์๋ฒ ํต์ ์ํ๊ฐ ๋ก๋ฉ์ค` ์ผ ๋ Fallback UI๋ฅผ ๋ณด์ฌ์ค ์ ์๊ฒ ์ ์ธ์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
12321232- ์ฐธ๊ณ ๋ก, Suspense ์ปดํฌ๋ํธ๋ ๋ฆฌ์กํธ v16๋ถํฐ ์ ๊ณต๋๋ ` Component Lazy Loading ` ์ด๋ ` Data Fetching ` ๋ฑ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ๋, ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ Fallback UI(ex: Loader)๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ ์ปดํฌ๋ํธ๋ค.
12331233
12341234` ` ` tsx
@@ -1252,7 +1252,7 @@ function App() {
12521252}
12531253` ` `
12541254
1255- - ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ฐ๋ฆฌ๋ ์๋ฒ ์ํ๊ฐ ๋ก๋ฉ์ผ๋ Loader ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ค!๋ผ๊ณ ์ดํดํ ์ ์๋ค.
1255+ - ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ฐ๋ฆฌ๋ ์๋ฒ ์ํ๊ฐ ๋ก๋ฉ์ผ ๋ Loader ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ค!๋ผ๊ณ ์ดํดํ ์ ์๋ค.
12561256- Suspense์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ด๋ค ๋ก์ง์ด ๋์ํ๋์ง ์ฐ๋ฆฌ๋ ์ ๊ฒฝ์ฐ์ง ์์๋๋๋ค. ์ด์ฒ๋ผ ` ๋ด๋ถ ๋ณต์ก์ฑ์ ์ถ์ํ` ํ๋๊ฒ ๋ฐ๋ก ` ์ ์ธํ ์ปดํฌ๋ํธ` ์ด๋ค.
12571257- ๋ํ, ์์ ๊ฐ์ด react-query์ ๊ฒฐํฉํ Suspense๋ ์๋์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๋์์ํ๋ค. ์ฐธ๊ณ ํด๋ณด์.
12581258
@@ -1266,45 +1266,49 @@ function App() {
126612667. MainComponent mount
12671267` ` `
12681268
1269- - Tanstack React Query ๊ณต์๋ฌธ์์ Community Resources์์๋ Suspense๋ฅผ ๋ ํ์
์ธ์ดํํ๊ฒ ์ ์ฌ์ฉํ๊ธฐ ์ํด [useSuspenseQuery](https://suspensive.org/ko/docs/react-query/src/useSuspenseQuery.i18n), [useSuspenseQueries](https://suspensive.org/ko/docs/react-query/src/useSuspenseQueries.i18n), [useSuspenseInfiniteQuery](https://suspensive.org/ko/docs/react-query/src/useSuspenseInfiniteQuery.i18n)๋ฅผ ์ ๊ณตํ๋ [@suspensive/react-query๋ฅผ ์๊ฐ](https://tanstack.com/query/v4/docs/react/community/suspensive-react-query)ํ๊ณ ์๋ค.
1269+ <br />
1270+
1271+ ### ๐ก @suspensive/react-query
1272+
1273+ - Tanstack React Query ๊ณต์๋ฌธ์์ ` Community Resources ` ์์๋ Suspense๋ฅผ ๋ ` ํ์
์ธ์ดํ` ํ๊ฒ ์ ์ฌ์ฉํ๊ธฐ ์ํด [useSuspenseQuery](https://suspensive.org/ko/docs/react-query/src/useSuspenseQuery.i18n), [useSuspenseQueries](https://suspensive.org/ko/docs/react-query/src/useSuspenseQueries.i18n), [useSuspenseInfiniteQuery](https://suspensive.org/ko/docs/react-query/src/useSuspenseInfiniteQuery.i18n)๋ฅผ ์ ๊ณตํ๋ [@suspensive/react-query](https://tanstack.com/query/v4/docs/react/community/suspensive-react-query)๋ฅผ ์๊ฐํ๊ณ ์๋ค.
12701274
12711275### AS IS (@tanstack/react-query)
12721276
12731277` ` ` tsx
1274- import { useQuery } from ' @tanstack/react-query'
1278+ import { useQuery } from " @tanstack/react-query" ;
12751279
12761280const Example = () => {
12771281 const query = useQuery ({
12781282 queryKey ,
12791283 queryFn ,
12801284 suspense: true ,
1281- })
1285+ });
12821286
1283- query .data // TData | undefined
1287+ query .data ; // TData | undefined
12841288
12851289 if (query .isSuccess ) {
1286- query .data // TData
1290+ query .data ; // TData
12871291 }
1288- }
1292+ };
12891293` ` `
12901294
12911295### TO BE (@suspensive/react-query)
12921296
12931297` ` ` tsx
1294- import { useSuspenseQuery } from ' @suspensive/react-query'
1298+ import { useSuspenseQuery } from " @suspensive/react-query" ;
12951299
12961300const Example = () => {
12971301 const query = useSuspenseQuery ({
12981302 queryKey ,
12991303 queryFn ,
1300- }) // suspense: true๊ฐ ๊ธฐ๋ณธ์
๋๋ค.
1304+ }); // suspense: true๊ฐ ๊ธฐ๋ณธ์
๋๋ค.
13011305
13021306 // isSuccess์ผ๋ก type narrowing์ด ํ์ํ์ง ์์ต๋๋ค.
1303- query .data // TData
1304- }
1307+ query .data ; // TData
1308+ };
13051309` ` `
13061310
1307- > suspensive/react-query์ ํ
(useSuspenseQuery, useSuspenseQueries, useSuspenseInfiniteQuery)์ @tanstack/react-query v5 alpha๋ฒ์ ์ ์ถ๊ฐ([๊ด๋ จ Pull Request](https://github.com/TanStack/query/pull/5739))๋๊ณ ๊ณต์ API๋ก [์ด ํ์ด์ง](https://tanstack.com/query/v5/docs/react/guides/suspense)์์ ํ์ธํ ์ ์์ต๋๋ค.
1311+ > suspensive/react-query์ ํ
(useSuspenseQuery, useSuspenseQueries, useSuspenseInfiniteQuery)์ @tanstack/react-query v5 alpha๋ฒ์ ์ ์ถ๊ฐ([๊ด๋ จ Pull Request](https://github.com/TanStack/query/pull/5739))๋๊ณ ๊ณต์ API๋ก [์ด ํ์ด์ง](https://tanstack.com/query/v5/docs/react/guides/suspense)์์ ํ์ธํ ์ ์์ต๋๋ค.
13081312
13091313<br />
13101314
0 commit comments