首页 文章

使用Apollo链路状态缓存实现客户端过滤

提问于
浏览
0

是否可以查询Apollo客户端缓存以获取客户端上的筛选数据列表?

客户端从graphql服务器获取数据后,可以将数据视为来自Apollo dev工具的本地缓存 .

如何在不到服务器的情况下获得与“标签”集匹配的“项目”类型列表?

type Item {
 id: ID
 text: String
 tags: [String]
}

我认为这对于Apollo-link-state自定义解析器是可行的,但到目前为止还没有能够找到它的策略或在网上任何地方找到一个例子 .

我知道Apollo缓存是已经执行的查询的数据,并且可以使用ID和.readFragment访问它,但是如果数据已经存在于客户端缓存中,则应该可以获取数据的列表 . 一定的条件?

Update:

具体要求如下

  • 从服务器获取getItem的前100个结果

  • 用户通过客户端上的某些标记过滤结果

  • 显示已提取的100条记录中的已过滤项目

  • FetchMore记录以匹配来自服务器的过滤条件,以填充页面的其余部分,最多100个项目 .

  • 根据过滤条件允许分页 .

随着更多使用的发生,我们将缓存中的大多数项目提供大多数数据的即时过滤体验 .

确切的问题是我们可以使用.readFragment或.readQuery来访问记录的原始列表并在客户端中即时过滤(如果是这样/例如)?还是有另一种方式来看待这个?

1 回答

  • 1

    使用 apollo-link-state 可以实现这种功能 .

    example - 'internal'查询可以被fetchPolicy强制为 cache-only

    还要考虑组件状态下的简单过滤(或other options - 这一切都取决于(共享过滤结果)要求 .

相关问题