没有缓存和加载更多的阿波罗客户端不起作用

时间:2021-07-01 09:53:22

标签: javascript graphql apollo apollo-client

当我将 no-cache 设置为查询的获取策略时,会发生很多奇怪的事情。

第一个问题:. load more 按钮不再起作用,因此为了使其再次起作用,我添加了 notifyOnNetworkStatusChange: true, 并开始起作用,但再次出现第二个问题。

第二个问题:如果没有我自己的 mergeFunction,fetch more 根本不起作用。所以我也加了这个..

function mergeFunction(existing: [], incoming: []) {
  if (!incoming) return existing;
  if (!existing) return incoming;
  return [...existing, ...incoming];
}

const client = new ApolloClient({
  uri: subgraphUrl,
  cache: new InMemoryCache({
    typePolicies: {
      Query: {
        fields: {
          daos: {
            keyArgs: ['where', ['name']],
            merge: mergeFunction,
          },
        },
      },
    },
  }),
  connectToDevTools: true,
});

但是出现了第三个问题。

第三个问题:在我点击 load more 按钮后,执行这个

const loadMore = async () => {
    if (fetchMore) {
      fetchMore({
        variables: {
          offset: visibleDaoList.length,
        },
      });
    }
  };

事实证明,在列表中,记录会一遍又一遍地重复,并且列表永远不会结束。即使我有 10 条记录,我还是可以一次又一次地点击加载更多,它会显示重复的内容。

我做错了吗?出于某种原因,我需要使用 no-cache...

0 个答案:

没有答案