将
Node根领域,在全球唯一的ID组合,进场时,继电器需要 重新获取
的对象。当您调用
this.props.relay.forceFetch()或为全局ID已知的对象的查询添加字段到查询中时,就会进行重新引用。
在这种情况下,Relay将短路常规查询并直接使用其全局ID和
node根调用对对象执行查询。
范例 :
假设
$showComments是
false,当该查询首次解决。
query { viewer { stories(first: 10) { edges { node { id, comments(first: 10) @include(if: $showComments) { author, commentText} text, } } } }}这将导致某些故事的获取,
id而
text现在已经知道了其ID。
想象一下,在将来的某个时间,变量
$showComments变为
true。中继将使用
node根字段仅重新获取所需的数据。
query { node(id: "ABC123") { fragment on Story { comments(first: 10) { author, commentText } } } node(id: "DEF456") { fragment on Story { comments(first: 10) { author, commentText } } } node(id: "GHI789") { fragment on Story { comments(first: 10) { author, commentText } } } ...}这取决于几部分:
- 每个对象必须具有全局唯一的ID,或由一个类型/ ID对标识(
globalIdField
帮助程序执行此操作并生成base64编码的字符串)。 - 服务器必须知道如何从全局唯一ID解析对象,反之亦然。这是
nodeDefinitions
为了什么。 - 希望使用此系统可重新提取的任何对象都必须实现
nodeInterface
。
另请参阅:https : //facebook.github.io/relay/docs/graphql-
object-
identification.html#content



