片段组合如何在Relay中工作?

时间:2016-02-21 10:24:56

标签: relayjs graphql graphql-js

让我们使用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

有趣的是,如果我们将 text 添加到下面的片段

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

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

我的问题是,为什么即使它们是由Graphql Server返回的,也无法从合成中获取“属性”?

1 个答案:

答案 0 :(得分:1)

感谢#relay频道的#7485。

他指出这是设计的预期行为。

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