2

让我们使用 TODO 示例。在TodoList它(第 81 行)有一个片段组成为

todos(status: $status, first: $limit) {
  edges {
    node {
      id,
      ${Todo.getFragment('todo')},
    },
  },
  ....
}

现在如果我添加一个循环

this.props.viewer.todos.edges.map(edge =>
console.log(edge.node.text)
);

在第 30 行执行renderTodos()函数,它将输出undefined

有趣的是,如果我们向片段中添加文本,如下所示

todos(status: $status, first: $limit) {
  edges {
    node {
      id,
      text,
      ${Todo.getFragment('todo')},
    },
  },
  ....
}

它实际上“声明”了两次文本(也在 Todo 组件中声明)并且循环完美运行。

我的问题是,为什么即使 Graphql 服务器返回了“属性”,也无法从组合中取回它们?

4

1 回答 1

1

感谢 #relay 频道的 hueyp#7485。

他指出,这是有意设计的行为。

https://facebook.github.io/relay/docs/thinking-in-relay.html#data-masking

于 2016-02-22T23:41:25.370 回答