0

这是文档中的示例。问题是,如果我的 TodoItem 组件中还需要一些其他数据,这些数据完全位于数据图中的不同位置,并且无法通过 Todo->TodoItem 链获取,该怎么办。

class TodoItem extends React.Component {
  render() {
    const item = this.props.data;

  }
}
module.exports = createFragmentContainer(
  TodoItem,
  graphql`
    fragment TodoItem on Todo {
      text
      isComplete
    }
  `,
);

似乎 Relay/GraphQL 要求视图与数据模型在相同的层次结构中组成。组件有没有办法访问其他片段?不知道,是这样的:

module.exports = createFragmentContainer(
  TodoItem,
  graphql`
    fragment TodoItem on Todo {
      text
      isComplete
    }
  `,
  graphql`
    fragment FriendItem on Friends {
      name
    }
  `,
);
4

1 回答 1

3

我不确定这是否是您想要的,(我也只是从中继开始)但您可以使用函数中的createFragmentContainer指定不同的片段:

片段容器:

export default createFragmentContainer(TodoItem, {
  todo: graphql`
    fragment TodoItem_todo on Todo {
      text
      isComplete
    }
  `,
  friend: graphql`
    fragment FriendItem_friend on Friends {
      name
    }
  `,
});

然后在你这样的queryRenderer东西中:

query={graphql`
    query AppQuery {
        todos {
            ...TodoItem_todo
        }
        friends {
            ...FriendItem_friend
        }
    }
`}
于 2018-02-27T11:19:50.503 回答