Suspense

Suspenseとは、React 18から追加された機能で、Suspenseを使用することで、その配下のツリーにレンダーする準備ができていないコンポーネントがあるときに表示するローディングインジケータを指定できる

使用前

import { useQuery } from 'react-query'

export const Content: React.FC = () => {
  const { isLoading, message } = useQuery('message', loadMessage)

  if (isLoading) {
    // ローディング中
    return <p>Loading...</p>
  }
  return <Message message={message} />
}

export const App: React.FC = () => {
  return <Content/>
}

使用後

import { Suspense } from 'react'
import { useQuery } from 'react-query'

export const Content: React.FC = () => {
  const { message } = useQuery('message', loadMessage)
  return <Message message={message} />
}

export const App: React.FC = () => {
  return (
    <Suspense fallback={<p>Loading...</p>}>
      <Content />
    </Suspense>
  )
}