2017-06-03 17 views
1

这个标题很混乱,但我会尽力解释我所能做到的最好的。我遇到了一种情况,我正在收集并显示React Native中来自服务器的数据元素列表。它使用一个查询将GraphQL参数发送到服务器,以将最初的请求限制为前15个元素。Apollo客户端React容器将创建的元素添加到分页的元素列表中而不需要重新调用

query GetElements ($count: Int) { 
    elements (count: $count) { 
      id 
      name 
      tye 
    } 
} 

如前所述,这将查询最初的计数为15个元素的主列表。

我有另一个应用程序页面,用户可以使用不同的GraphQL查询在后端创建一个新的元素。

我的问题是:有没有办法轻松更新元素的主要列表,以包含新创建的元素,而无需执行任何额外的网络请求?换句话说,只要create命令成功,我希望能够简单地将新元素添加到元素的主要列表中。

问题是:除非我知道使用初始查询发送的变量,否则Apollo的readQuery命令对更新代理不会返回适当的数据集进行更新;这包括分页count变量。

+0

我意识到使用'updateQueries'选项可以很好地完成这项工作,但我知道阿波罗团队正试图让人们远离现在。 –

回答

0

现在,您可以定义查询缓存存储这样的关键:

query AllItems($cursor: String, $limit: Int, $query: String) { 
    items(cursor: $cursor, limit: $limit, query: $query) @connection(key: "AllItemsQuery") { 
    count 
    cursor 
    has_next 
    has_prior 
    data{ 
     ...CoreItem 
    } 
    } 
} 
+0

我将不得不考虑这一点。这可能是处理这种情况的好方法。那么这是否允许我更新现有的查询,只要它包含相同的连接密钥? –

+0

@Guardian_nw如果项目被删除,你将如何更新AllItemsQuery – johndavedecano

+0

guardian_nw,是,并使用过滤器来定义添加到密钥的查询变量,从而允许您省略游标等。 @johndavedecano,使用与您相同的更新流程要插入一个新的obj,只需切分存储数组。 http://dev.apollodata.com/react/api-mutations.html#graphql-mutation-options-update – Manzo

相关问题