React Queryとは?
2020年2月にリリースされた。
リリースノート
バージョン | リリース日 | 説明 |
---|---|---|
3 | ||
4 | 2022/4 | React18に対応した。suspenseなどと組み合わせる実装が増えてます。 |
SWR
同系統のライブラリとしてSWRがあります。React Queryと比較するとSWRの方がシンプルなライブラリになっていて軽量です。なのでプロジェクトの特性に合わせてReact QueryかSWRどちらを使うかを検討していくと良いでしょう。
メリット
fetchの回数を減らせる。
サーバーから取得したデータをキャッシュに格納できるようになり、不要なAPI fetchの回数を減らすことができるようになったuseContextやReduxではできなかった。
従来だとuseEffectで第二引数に[]を指定していたとしてもマウントされる度にfetchが実行される。なので、別画面に行って戻ってきたとしても改めてfetchが実行されたりする。React QueryはstaleTimeによって再fetchの間隔を制御できたりする。
また、キャッシュからデータを取得する場合はLoadingが表示されずすぐにデータを閲覧できるメリットもある。
Reduxに格納するデータ量を減らせる。
React Queryによりfetchしてキャッシュに格納されたデータは自動的にグローバルステートになります。
なので、様々なコンポーネントから自由に呼び出すことが可能になります。
コード量がかなり減る。
従来のuseContextやReduxを使った書き方に比べると下記の処理を記述しなくてよくコード記述量が減る。
- useEffectでfetchする処理
- fetch状況の取得
staleTime
staletime(例えば、10秒)というのを設定しておいてその間に改めてアクセスしたとしても改めてfetchは行わずにキャッシュから取得する。また、APIのエンドポイントごとに設定することは可能。
なので、例えばサーバーデータがほとんど変わらないようなAPIの場合はstaleTimeを長めに設定しておくなどの設定を選択したりする。
また、キャッシュのデータが古い可能性もあるがとりあえず古いデータを取得してその裏で最新データを取得してくれる。(Loadingが表示されない。)
なお、staleに到達したとしてもreact-Queryのv4以降はReactの再レンダリングが行われなくなっています。(それまでは行われる。)
useQuery
データを取得する。
useMutation(ユースミューテーション)
データ登録、削除、更新したい場合に使う。
この記事へのコメントはありません。