App 컴포넌트에서 한 번에 Loading 컴포넌트를 불러오고 이를 useIsFetching으로 처리한다.
import { Spinner, Text } from '@chakra-ui/react'
import { useIsFetching } from '@tanstack/react-query'
export function Loading() {
const isFetching = useIsFetching()
const display = isFetching ? 'inherit' : 'none'
return (
<Spinner
thickness="4px"
speed="0.65s"
emptyColor="olive.200"
color="olive.800"
role="status"
position="fixed"
zIndex="9999"
top="50%"
left="50%"
transform="translate(-50%, -50%)"
display={display}
>
<Text display="none">Loading...</Text>
</Spinner>
)
}
강의에서 나왔던 새로운 훅이라 정리해보지만, 어떤 이점이 있는지는 아직 모르겠다. 중앙에서 한 번에 로딩을 보여준다면, 내가 원하는 부분에서만 로딩을 보여주기는 힘들 것이고, 미리 먼저 사용자한테 레이아웃을 보여줄 수 있는 부분도 못 보여주지 않을까 하는 우려가 있다.
서버로 부터 리액트 쿼리를 통해 데이터를 받아올 때 받아오는 동안 로딩을 보여주더라도 예측할 수 있는 데이터는 미리 받아온다든지 클라이언트 자체에서 기본값으로 설정해 놓은 데이터를 보여주는 등과 관련해서 리액트 쿼리는 여러가지 방법을 사용할 수 있다.