首页 > 解决方案 > RN Apollo Client 3.0 - 使用合并功能处理重新获取

问题描述

我最近正在从 2.0 迁移到 apollo 客户端 3.0。

我有一个需要获取更多和分页的查询。

通过做,

const cache = new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        getData: {
          // Handles incoming data
          keyArgs: [],
          merge(existing ={/*some default object fields*/}, incoming) {
            return {
              ...existing,
              pageInfo: incoming.pageInfo,
              edges: [...existing.edges, ...incoming.edges],
            };
          },
        },
      },
    },
  },
});

我能够处理初始查询/获取和分页。但是,我在如何处理重新获取方面遇到了麻烦。使用此合并功能,重新获取的数据只需与现有缓存数据连接。我无法找到如何在合并功能中正确处理这个问题。

如果有人知道如何处理这个问题,请告诉我。

标签: react-apolloapollo-client

解决方案


我能够通过观察 args 来解决问题。

const cache = new InMemoryCache({
      typePolicies: {
        Query: {
          fields: {
            getData: {
              // Handles incoming data
              keyArgs: [],
              merge(existing ={/*some default object fields*/}, incoming, {args}) {
                if(args && !args.after){
                    // Initial fetch or refetch
                    return incoming;
                }
                
                // Pagination
                return {
                  ...existing,
                  pageInfo: incoming.pageInfo,
                  edges: [...existing.edges, ...incoming.edges],
                };
              },
            },
          },
        },
      },
    });

推荐阅读