TanStack Query + useOptimistic
キャッシュライブラリとuseOptimisticの併用パターン
併用パターン
// TanStack Query でデータ取得
const { data: posts } = useQuery({ queryKey: ["posts"], queryFn: fetchPosts });
// useOptimistic で即時UI更新
const [optimisticPosts, addOptimistic] = useOptimistic(posts, updateFn);
// useMutation で楽観的更新
const mutation = useMutation({
mutationFn: likePost,
onMutate: async (postId) => {
// 楽観的にUIを更新
addOptimistic({ id: postId, increment: 1 });
},
onSuccess: () => {
// キャッシュを再取得
queryClient.invalidateQueries({ queryKey: ["posts"] });
},
});TanStack Query 単体
キャッシュ更新後にUI反映
+ useOptimistic
即座にUI更新
確認ポイント
- • TanStack Query単体: キャッシュ更新後にUIが反映(約0.8秒待ち)
- • + useOptimistic: 即座にUI更新、キャッシュは後から同期
- • 両者を組み合わせることで、キャッシュの恩恵と即時反応を両立