这个React / Relay / GraphQL应用程序有一个简单的容器 App 和一个嵌套的索引页 EntriesPage . App 请求 viewerid ,而 EntriesPage 请求其他 viewer 字段,如 nameentries 列表 .

正确发送到GraphQL的 EntriesPage 查询片段包含附加的 name 字段,但缺少 entries 连接 .

知道为什么在片段中指定的 entries 被忽略了,而 name 被愉快地包括在内? https://dl.dropboxusercontent.com/u/891448/queries.png

GraphiQL 中运行类似的查询会返回正确的结果 .

路线:

export default (
  <Route
    path="/"
    component={App}
    queries={ViewerQueries}
  >
    <IndexRoute
      component={EntriesPage}
      queries={ViewerQueries}
    />
  </Route>
);

App.js

class App extends React.Component {
  render() {
    const { children } = this.props;
    return (
      <div className="container-fluid">
        {children}
      </div>
    );
  }
}

export default Relay.createContainer(App, {
  fragments: {
    viewer: () => Relay.QL`
      fragment on User {
        id
      }
    `
  },
});

EntriesPage:

class EntriesPage extends React.Component {
  render() {
    const { viewer } = this.props;
    const entries = viewer.entries.edges.map(e => e.node);
    return (
      <div className="row">
        <div className="col-sm-3">
          <EntryList entries={entries} />
        </div>
        <div className="col-sm-9">
        </div>
      </div>
    );
  }
}

export default Relay.createContainer(EntriesPage, {
  fragments: {
    viewer: () => Relay.QL`
      fragment on User {
        id,
        name,
        entries(first:10) {
          edges {node {id}}
        }
      }
    `
  }
});