react-queryのinitialDataが便利だなって話
react-queryではuseQueryなどのhooks利用時にinitialDataという初期データを投入することができます。
この初期データというのは、useQueryで取得してくるデータ(厳密にはなんでもいいけど、そんな使い方するならplaceholder使う?)で、すでに何かしらの方法で初期データがあれば、fetchをせずに、その初期データを利用するというもの。
また、queryClientを利用すれば、react-queryで管理しているキャッシュを拾ってくれるので、initialDataと組み合わせればいい感じにパフォーマンスアップを期待できる。
const useHoge = () => { ... const queryClient = useQueryClient(); const query = useQuery(['hoge'], () => someRequest(), { initialData() { return queryClient.getQueryData(['hoge'])?.find( data => data.id == someId) } }) ... }
queryClientのデータを、別ページで取得していたことあるデータから拾ってくるなど、うまいこと組み合わせるといい感じです。
ちなみに、initialDataがundefinedであれば、普通に拾いに行ってくれます。