中继:获取递归数据 returns null

Relay: fetch for recursive data returns null

我有一个要获取和显示的递归数据结构。我有一个图表 ql 类型如下:

human {
  name,
  children: [human]
}

现在我想逐步获取数据,因此用于响应 类 HumanList 和 HumanItem,其中我使用中继仅在单击某个项目时才获取 children。在我的实际代码中,中继在非常点击时给 children 一个空值,即在渲染第一组 children 时。我在中继操场上尝试了测试代码,发现了类似的问题。 Here 是 link 要点。 Playground.js 包含代码部分,Playground.gql.js 包含架构部分。单击每个数字打开其下方的 children。 3 或 4 级后开始显示 Found children as null。对我来说,它发生在 1.1.2.2。如果您没有遇到这种情况,请尝试在 SCHEMA 代码中添加更多级别,错误就会出现。

我已经检查过中继问题 #246 and #536,但其中 none 有帮助。

非常欢迎任何帮助。

这是一个错误。给定一个复数字段,当需要查询新数据时,我们会将存储中的内容与应用程序所需的内容进行比较。错误是我们会假设 all 复数字段的记录在存储中具有相同的形状,并且仅使用任何复数字段中的第一个存储记录来进行比较。在您的情况下,这当然不是真的,复数字段中的某些记录可能会展开,而某些记录可能会折叠。

这已作为 https://github.com/facebook/relay/issues/1243 的一部分修复,将在 Relay 0.9.1 之后的版本中发布。