データ読み込み
TanStack Query continues its growth trajectory, both in terms of usage and positivity. The interest graph in particular reveals that –along with tRPC– it's pretty much the only data loading library that is still intriguing respondents today!
(訳) TanStack Queryは、使用率と好感度の両面で成長の軌跡をたどり続けています。特に「関心度グラフ」を見ると、tRPCと並んで、現在も回答者の関心を惹きつけているほぼ唯一のデータローディングライブラリであることが明らかになっています!
https://2024.stateofreact.com/en-US/libraries/data-loading/ より引用
Fetch API による基本的なデータ取得
React でデータを取得する最も基本的な方法は、Fetch API と useEffect を組み合わせることです。
Fetch API のサンプル
JSONPlaceholder という無料の API を使って、投稿一覧を取得するサンプルです。
TanStack Query を使ったデータ取得
TanStack Query は、データ取得、キャッシング、同期、更新を簡単に行えるライブラリーです。
TanStack Query のサンプル
同じデータを TanStack Query を使って取得する例です。
TanStack Query の高度な機能
キャッシングとバックグラウンド更新のデモ
TanStack Query の強力なキャッシング機能を体験できるサンプルです。
TanStack Query の主な機能
- 自動キャッシング: 一度取得したデータは自動的にキャッシュされ、再利用される
- バックグラウンド更新: 古いデータを表示しながら、バックグラウンドで新しいデータを取得
- リクエストの重複排除: 同じクエリキーのリクエストは自動的に統合される
- 自動リトライ: エラー時に自動的にリトライする
- データの無効化: 特定のデータを無効化して再取得させることができる
- 楽観的更新: サーバーレスポンスを待たずに UI を更新できる
SWR を使ったデータ取得
SWR は、Vercel が開発したデータフェッチングライブラリーです。名前は HTTP キャッシュ戦略の "stale-while-revalidate" に由来しています。
SWR のサンプル
TanStack Query と似た機能を持ちますが、よりシンプルな API が特徴です。
SWR の主な機能
- シンプルな API:
useSWRフック一つで簡単にデータ取得 - 自動再検証: フォーカス時、再接続時、定期的にデータを自動更新
- キャッシング: 同じキーのリクエストは自動的にキャッシュされる
- 軽量: 小さなバンドルサイズで高速
- TypeScript サポート: 型安全なデータフェッチング
- 楽観的更新:
mutate関数でローカルデータを即座に更新
まとめ
- まずは Fetch API を使えるようになろう
- 適切なキャッシュ管理はライブラリに任せよう
- 様々な通信プロトコルや仕様がある
- JSON-RPC: tRPCを使おう
- GraphQL: Apollo Clientを使おう
