让我们使用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(),它将输出未定义
有趣的是,如果我们像下面这样向片段添加文本
todos(status: $status, first: $limit) {
edges {
node {
id,
text,
${Todo.getFragment('todo')},
},
},
....
}
它实际上"声明"了两次文本(也在 Todo 组件中声明),并且循环运行良好。
我的问题是,为什么即使 Graphql 服务器返回了"属性",也无法从组合中获取"属性"?
感谢 hueyp#7485 在 #relay 频道。
他指出,这是设计上有意的行为。
https://facebook.github.io/relay/docs/thinking-in-relay.html#data-masking