์ ๊ทผ (์์ฝ)
์ฑ์์ isLoading ๊ณผ isFetching๋ง์ ์ฌ์ฉํด ์ปดํฌ๋ํธ๋ง๋ค ๊ฐ๋ณ Loading Indicator๋ง์ ํ์ฉํ๋ค๋ฉด,
useIsFetching์ ๋ํด์ ์๊ฒ ๋๊ณ ๋ ํฐ ์ฑ์ ์ค์ ์ง์ค์ Loading Indicator๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ ์ํด ์ ๋ฆฌ๋ฅผ ๋จ๊ธด๋ค.
1. isLoading & isFetching & useIsFetching
2. useIsFetching ์ ์ฉํ๊ธฐ
3. ์ ์ฉ TEST
๋ฐฉ๋ฒ
1. isLoading & isFetching & useIsFetching
# useIsFetching
- ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด "๊ฐ๋ณ ๋ก๋ฉ ์ธ๋์ผ์ดํฐ (Loading Indicator)" ๋ฅผ ์ฌ์ฉํ๋ ๋์
- "์ค์ ์ง์ค์ ๋ก๋ฉ ์ธ๋์ผ์ดํฐ"๋ฅผ ์ฌ์ฉํ๋๋ก ์ฑ์ ์ ๋ฐ์ดํธ ํ ์์ !
>> useIsFetching ์ฌ์ฉ!
## ์๊ท๋ชจ ์ฑ (small apps)
- useQuery ๋ฐํ ๊ฐ์ฒด์์ "isFetching" ์ฌ์ฉํ์!
- useQuery ๋ฐํ ๊ฐ์ฒด์์ "isFetching"์ ๋ถํดํ์ต๋๋ค.
## isFetching > isLoading
- isLoading : isFetching๊ณผ ๋์ผํ๋ฉฐ ์บ์๋ ๋ฐ์ดํฐ๊ฐ ์์
- ์ต์ด 1ํ ์์ฒญ์ด๋ฉฐ, ์บ์๊ฐ ์์ ๋๋ง true
- isFetching : isLoading์ ํ๋ ๋ ํฐ ์นดํ ๊ณ ๋ฆฌ์ด๋ค. (์บ์๊ฐ ์๋ ์๋ )
- ๋ชจ๋ ์์ฒญ์ ํฌํจ, ์บ์ ์ ๋ฌด์ ๊ด๊ณ์์ด ์์ฒญ์ด ๋ฐ์ํ๋ฉด true
## ํฐ ์ฑ (larger app)
- ๋ ํฐ ์ฑ์์๋ ๋ก๋ฉ ์คํผ๋ (Loading Spinner) ๋ฅผ ํ์ํด์ผํ๋ค.
- Query๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ ์๋ ๊ฒฝ์ฐ, ์ค์ ์ง์ค์ ๋ก๋ฉ ์คํผ๋ (Loading Spinner) ๊ฐ ์ฑ ์ปดํฌ๋ํธ์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์
- ๊ฐ์ ธ์ค๋ Query๊ฐ ์๋ค๋ฉด, ์ ๊ธฐ๋ฅ์ On, ์์ผ๋ฉด OFF ํจ
>> "useIsFetching" ์ ํ์ฌ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๊ฐ ์๋์ง ์๋ ค์ฃผ๋ ๋ง๋ฒ์ hook์ด๋ค.
- ๋ฐ๋ผ์ ๊ฐ Custom Hooks์ isFetching์ ์ฌ์ฉํ ํ์๊ฐ ์๋ค!!
2. useIsFetching ์ ์ฉํ๊ธฐ
import {Spinner, Text} from "@chakra-ui/react";
import {useIsFetching} from "@tanstack/react-query";
export function Loading() {
โญ๏ธ const isFetching = useIsFetching(); // useIsFetching์ด ๋ฐํํ๋ ๋ฌด์์ด๋ ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
// ์ useIsFetching์ ํ์ฌ '๊ฐ์ ธ์ค๊ธฐ(fetch)์ํ'์ธ Query ํธ์ถ์ ์๋ฅผ ๋ํ๋ด๋ number(์ ์)๋ฅผ ๋ฐํํ๋ค.
โญ๏ธ const display = isFetching ? "inherit" : "none";
// ๋ฐ๋ผ์ isFetching์ด 0๋ณด๋ค ํฌ๋ฉด Fetching ์ํ์ ํธ์ถ์ด ์๊ณ , '์ฐธ'์ด๊ธฐ์ inherit = Loading Spinner ํ์!
// ํ์ฌ ๊ฐ์ ธ์ค๋ ํญ๋ชฉ์ด 0์ธ ๊ฒฝ์ฐ, 0์ false์ด๊ธฐ์ none! = Loading Spinner ํ์X
return (
<Spinner
... ์ค๋ต
>
<Text display="none">Loading...</Text>
</Spinner>
);
}
3. ์ ์ฉ TEST
>> ์ดํ, ๊ฐ๋ฐ์๋๊ตฌ > ๋คํธ์ํฌ > ์ธํฐ๋ท ์๋์ค์ (?) > ๋น ๋ฅธ 4G ๋ฑ > ์๋ก๊ณ ์นจ์ Loading Spinner๋ฅผ ํ์ธํ ์ ์์
>> ๋๋ถ์ด, ์ฐฝ์ ์ผ๋ ์ํ๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ํญ์ ๊ฐ๋ค๊ฐ ๋์์ค๋ฉด ๋ฐ๋ก ๋ก๋๊ฐ ๋๋๋ฐ,
์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก react-query์ ํจ๊ป ์ ๊ณต๋๋ reFetch ๊ตฌ์ฑ์ด๋ค!
'๐ป DEV > React-Query' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ReactQuery] (1) ReactQuery ๋ ๋ฌด์์ธ๊ฐ? (0) | 2025.03.15 |
---|---|
[ReactQuery] (3) ReactQuery - customHooks (feat. Nextjs) (0) | 2025.03.15 |
[ReactQuery] (2) Nextjs ํ๋ก์ ํธ์ ReactQuery ์ ์ฉ (0) | 2025.03.14 |
๋๊ธ