这个React / Relay / GraphQL应用程序有一个简单的容器 App
和一个嵌套的索引页 EntriesPage
. App
请求 viewer
的 id
,而 EntriesPage
请求其他 viewer
字段,如 name
和 entries
列表 .
正确发送到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}}
}
}
`
}
});