ApolloGraphQL中的useQuery在第一次调用时更新缓存,但fetchMore会怎样呢?
创始人
2024-09-09 10:02:15
0

在 Apollo GraphQL 中,useQuery 是用于查询数据的 React Hook,它可以自动更新缓存。而对于 fetchMore,它用于在已有数据的基础上获取更多数据,不会触发缓存的自动更新。但是我们可以通过一些方法手动更新缓存。

下面是一个示例代码,演示了如何使用 useQueryfetchMore 来获取数据并更新缓存:

import { useQuery, gql } from '@apollo/client';

const GET_POSTS = gql`
  query GetPosts($limit: Int, $offset: Int) {
    posts(limit: $limit, offset: $offset) {
      id
      title
    }
  }
`;

const PostList = () => {
  const { loading, data, fetchMore } = useQuery(GET_POSTS, {
    variables: { limit: 10, offset: 0 },
  });

  if (loading) {
    return 

Loading...

; } const { posts } = data; const loadMorePosts = () => { fetchMore({ variables: { offset: posts.length }, updateQuery: (prev, { fetchMoreResult }) => { if (!fetchMoreResult) return prev; return { posts: [...prev.posts, ...fetchMoreResult.posts], }; }, }); }; return (
{posts.map((post) => (
{post.title}
))}
); }; export default PostList;

在上述代码中,我们首先定义了一个 GET_POSTS 查询,用于获取文章列表。然后,我们使用 useQuery Hook 来发起查询请求,并在初始时设置了 limitoffset 变量。

当数据加载完成后,我们可以从 data 对象中获取到 posts 数组。然后,我们通过 fetchMore 方法来获取更多的文章数据。在 fetchMore 方法中,我们指定了新的 offset 变量,用于获取下一批数据。我们还通过 updateQuery 参数来手动更新缓存,将新获取到的数据添加到之前的数据中。

最后,我们展示了文章列表,并提供了一个 "Load More" 按钮,点击该按钮时会触发 loadMorePosts 函数,从而获取更多的文章数据。

通过这种方式,我们可以在使用 fetchMore 方法获取更多数据时手动更新缓存,实现缓存的更新和数据的加载。

相关内容

热门资讯

安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...
app安卓系统登录不了,解锁登... 最近是不是你也遇到了这样的烦恼:手机里那个心爱的APP,突然就登录不上了?别急,让我来帮你一步步排查...
安卓系统拦截短信在哪,安卓系统... 你是不是也遇到了这种情况:手机里突然冒出了很多垃圾短信,烦不胜烦?别急,今天就来教你怎么在安卓系统里...
安卓系统要维护多久,安卓系统维... 你有没有想过,你的安卓手机里那个陪伴你度过了无数日夜的安卓系统,它究竟要陪伴你多久呢?这个问题,估计...
windows官网系统多少钱 Windows官网系统价格一览:了解正版Windows的购买成本Windows 11官方价格解析微软...
安卓系统如何卸载app,轻松掌... 手机里的App越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么轻松卸载安卓系统里的App,让...
怎么复制照片安卓系统,操作步骤... 亲爱的手机控们,是不是有时候想把自己的手机照片分享给朋友,或者备份到电脑上呢?别急,今天就来教你怎么...
安卓系统应用怎么重装,安卓应用... 手机里的安卓应用突然罢工了,是不是让你头疼不已?别急,今天就来手把手教你如何重装安卓系统应用,让你的...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...