片段合成如何在中继中工作



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

相关内容

  • 没有找到相关文章

最新更新