片段组合在 Relay 中是如何工作的?
Posted
技术标签:
【中文标题】片段组合在 Relay 中是如何工作的?【英文标题】:How does fragment composition work in Relay? 【发布时间】:2016-06-02 18:35:56 【问题描述】:让我们使用 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 服务器返回的“属性”也无法从组合中取回?
【问题讨论】:
【参考方案1】:感谢 #relay 频道的 hueyp#7485。
他指出这是有意设计的行为。
https://facebook.github.io/relay/docs/thinking-in-relay.html#data-masking
【讨论】:
以上是关于片段组合在 Relay 中是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]