使用Apollo在过滤的GraphQL查询结果之间切换

使用Apollo在过滤的GraphQL查询结果之间切换,graphql,apollo,react-apollo,Graphql,Apollo,React Apollo,在我的模式中,我有一个类型(ContentBlock),它包含使用中继标准连接(边、节点等)的嵌套实体(变体)数组。我有一个视图,它允许用户指定一些过滤条件,然后作为ContentBlock类型的参数获得传递,并返回一组过滤后的变体(过滤很复杂,必须在服务器上完成)。我还得到了一个具有不同查询的视图,该查询不向ContentBlock传递任何参数,因此返回所有嵌套的变体 当从“show all”视图切换到“filtered”视图时,Apollo将执行筛选查询,并且存储将得到更新,使得每个Cont

在我的模式中,我有一个类型(ContentBlock),它包含使用中继标准连接(边、节点等)的嵌套实体(变体)数组。我有一个视图,它允许用户指定一些过滤条件,然后作为ContentBlock类型的参数获得传递,并返回一组过滤后的变体(过滤很复杂,必须在服务器上完成)。我还得到了一个具有不同查询的视图,该查询不向ContentBlock传递任何参数,因此返回所有嵌套的变体

当从“show all”视图切换到“filtered”视图时,Apollo将执行筛选查询,并且存储将得到更新,使得每个ContentBlock实体的变体列表现在只包含筛选结果。但是,如果我现在返回到“ShowAll”视图,我仍然只有过滤后的结果

我知道当我点击该视图时,我总是可以对“show all”(显示全部)查询执行
.refetch()
,但我想知道是否有人建议我可以更改模式、查询或存储,这样我就可以在完整结果的同时维护过滤结果,并且在切换视图时不必返回服务器获取数据

即使在我写这篇文章的时候,我也在考虑在模式中添加一个字段,其中包含过滤后的变体ID列表——这样我仍然可以返回所有变体,但只显示过滤后的变体?但是,在我的应用程序中,还有其他一些情况下,我真的不需要获取所有这些内容(“全部显示”是一个管理视图,大多数用户只会获取过滤集)


如有任何想法或建议,将不胜感激

我不确定我是否理解您的应用程序的结构。据我所知,如果列表字段的任何参数不同,Apollo客户端会将每个列表存储在不同的位置,因此您应该拥有这两个参数。您可以使用Apollo客户端devtools查看存储中发生的情况。这可能会有帮助。