ApolloGraphqlrelayStylePagination阻止了查询从变量的更改中重新获取数据。
创始人
2024-09-09 10:00:39
0

可以尝试使用React hooks中的useMemo来缓存GraphQL操作,并根据变量的更改条件重新调用缓存的操作。从而实现在变量更改时也能重新查询数据。

代码示例如下:

import { useMemo } from 'react';
import { useQuery } from '@apollo/client';
import { graphql } from 'relay-runtime';
import { relayStylePagination } from '@apollo/client/utilities';

const QUERY = graphql`
  query MyQuery($first: Int!, $after: String) {
    items: myQuery(first: $first, after: $after) @connection(key: "myQuery_items") {
      edges {
        node {
          id
          name
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
`;

function MyComponent(props) {
  const { first, after } = props;
  
  const queryVariables = useMemo(() => ({ first, after }), [first, after]);

  const { loading, error, data, fetchMore } = useQuery(QUERY, {
    variables: queryVariables,
    fetchPolicy: 'cache-and-network',
    notifyOnNetworkStatusChange: true,
  });

  const loadedData = data?.items?.edges?.map(edge => edge.node) ?? [];
  const pageInfo = data?.items?.pageInfo;

  const fetchMoreData = () => {
    if (!pageInfo?.hasNextPage) return;
    const { endCursor } = pageInfo;

    fetchMore({
      variables: { after: endCursor },
      updateQuery: (prevResult, { fetchMoreResult }) => {
        return relayStylePagination([...prevResult?.items?.edges, ...fetchMoreResult?.items?.edges], fetchMoreResult?.items?.pageInfo, prevResult);
      }
    });
  };

  // your component render code here...
}

在这个示例中,我们使用缓存的GraphQL操作,并在useMemo函数中将变量作为依赖条件。使用fetchMore来在查询结果后继续获取数据,并使用relayStylePagination更新查询结果。

通过这种方法,可以在变量更改时重新获取

相关内容

热门资讯

揭秘(Wepoke安卓)外挂透... 自定义Wepoke安卓系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管...
分享一款!智星德州有没有挂(透... 分享一款!智星德州有没有挂(透视软件挂)-确实是真的有挂(2022已更新);亲,这款智星德州有没有挂...
十分钟普及!福建兄弟十三水装外... 十分钟普及!福建兄弟十三水装外挂多少钱,小猪对对碰外挂,技巧教程(有挂规律);十分钟普及!福建兄弟十...
一分钟揭秘!中至九江小程序辅助... 您好,中至九江小程序辅助器这款游戏可以开挂的,确实是有挂的,需要了解加微【285696317】很多玩...
6分钟了解!wepoke人有挂... 6分钟了解!wepoke人有挂吗(透视)原来真的有挂2025已更新)(哔哩哔哩)是一款可以让一直输的...
大神推荐!德扑之心透视辅助软件... 大神推荐!德扑之心透视辅助软件(透视辅助挂)-的确真的有挂(2024已更新);亲,这款德扑之心透视辅...
让我来分享经验(aapoker... 让我来分享经验(aapoker教程)软件透明挂辅助机制(辅助挂)普及教程(2023已更新)(哔哩哔哩...
7分钟攻略!小猪对对碰破解,雀... 7分钟攻略!小猪对对碰破解,雀神辅助器最新款,2024新版总结(有挂教学)1、快速入门:当你通过点击...
8分钟了解!wepker有透视... 8分钟了解!wepker有透视吗(透视软件挂)-原来是真的有挂(2021已更新);wepker有透视...
分享给玩家!榕城510k能拉好... 分享给玩家!榕城510k能拉好牌,雀神小程序辅助买,系统教程(有挂讲解);一、榕城510k能拉好牌有...