isFetching
- ๋น๋๊ธฐ ์ฟผ๋ฆฌ ํจ์๊ฐ ํด๊ฒฐ๋์ง ์์์ ๋ ํด๋น ํฉ๋๋ค. ( ์์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค )
isLoading
- isFetching์ด ์งํ ์ค์ด๊ณ , ์ฟผ๋ฆฌ์ ๋ํด ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ํ๋ฅผ ๋งํฉ๋๋ค.
- ์ฆ, isLoading ์ํ์ด๋ฉด isFetching ๋ํ ์งํ ์ค์ธ ์ํ ์ ๋๋ค. ( ๋์์ true )
- isLoading ์ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ํฉ์ ํด๋นํ๋ isFetching ์ ๋ถ๋ถ ์งํฉ ์ ๋๋ค.
์์
const {data, isLoading, isError, error} = useQuery(['posts', currentPage],
() => fetchPosts(currentPage), {staleTime : 2000, keepPreviousData : true});
// ๋ง์ฝ ๋ก๋ฉ ์ค์ด๋ผ๋ฉด
if(isLoading){
return <h3>Loading...</h3>;
}
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค, ์ฆ fetchPosts ํจ์๊ฐ ์คํ ์ค์ด๋ฉด์ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ๋ isLoading์ด ์ฐธ์ด ๋ฉ๋๋ค.
isFetching ์ผ๋ก ๋ฐ๊พธ๋ฉด โ
useEffect(()=>{
if(currentPage < maxPostPage){
const nextPage = currentPage + 1;
queryClient.prefetchQuery(['posts', nextPage], () => fetchPosts(nextPage));
}
},[currentPage, queryClient])
const {data, isLoading, isError, error, isFetching} = useQuery(['posts', currentPage],
() => fetchPosts(currentPage), {staleTime : 2000, keepPreviousData : true});
// ๋ง์ฝ ๋ก๋ฉ ์ค์ด๋ผ๋ฉด
if(isFetching){
return <h3>Loading...</h3>;
}
์บ์๋ ๋ฐ์ดํฐ์ ์กด์ฌ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํ๋ฉด์ ๋ก๋ฉ ํ์๋ฅผ ๋ํ๋ผ ๊ฒ ์ ๋๋ค.
โ ๊ฒฐ๊ณผ
- ์บ์์ ๋ฐ์ดํฐ๊ฐ ์๋๋ฐ๋ ํ๋ฉด์ Loading์ด ๋งค๋ฒ ๋ํ๋๊ฒ ๋ฉ๋๋ค.
์ฐจ์ด์ โ
- isLoading์ ํ๋ฉด์ ํ์ํ ๊ฒ์ด ์๋ฌด๊ฒ๋ ์์ ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ํ๋ด๋ ค๋ฉด (์ฆ, ์บ์์ ์๋ฌด๊ฒ๋ ์๊ณ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค)
- Prefetch ์ ๋ชฉ์ ์ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ฉด์ ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ ์ฌ๋ถ๋ฅผ ์กฐ์ฉํ ์๋ฒ์์ ํ์ธํ๋ ๊ฒ ์ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋๋ฉด์ ํด๋น ๋ฐ์ดํฐ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ ์ ๋๋ค.
โ ์ ๋ฆฌ
- isLoading์ ์๋ฒ์ ๋ฐ์ดํฐ ์์ฒญ์ ์ฒ์ ํ ๋
- isFetching์ ์๋ฒ์ ๋ฐ์ดํฐ ์์ฒญ์ ๋ค์ ํ ๋ (์บ์๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋)
โ ์ฐธ๊ณ
'๐ Front-End > React.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React Query - ๋ฌดํ ์คํฌ๋กค(Infinite Scroll) (0) | 2022.10.26 |
---|---|
React Query - ๋ณ์ด(Mutation) (0) | 2022.10.25 |
React Query - ๋ฐ์ดํฐ ํ๋ฆฌํจ์นญ(Pre-fetching) (0) | 2022.10.25 |
React Query - ํ์ด์ง ๋งค๊น(Pagination) (0) | 2022.10.25 |
React Query - ์ฟผ๋ฆฌ ํค (0) | 2022.10.25 |