我无法导航到我的应用中的/users
,因为它不会触发我想到的所有查询的提取。
我的应用由App
组件和一些包含Dashboard
或UserList
等实际内容的组件组成。还有一个EnsureAuthenticationContainer
但这只是一个组件,当用户通过身份验证时,只需渲染它的孩子。这是我的路线设置:
const ViewerQueries = {
viewer: () => Relay.QL`query { viewer }`
};
[...]
<Router history={browserHistory} render={applyRouterMiddleware(useRelay.default)} environment={Relay.Store}>
<Route path="/" component={App} queries={ViewerQueries}>
<Route path="login" component={Login} />
<Route component={EnsureAuthenticationContainer}>
<IndexRoute component={Dashboard} />
<Route path="users" component={UserList} queries={ViewerQueries} />
<many more routes />
</Route>
</Route>
</Router>
问题是,App
和UserList
都定义了fragements,似乎只发送了UserList
的查询。
App
的片段:
fragments: {
viewer: () => {
return Relay.QL`
fragment on ViewerType {
loggedInUser {
id
}
}
`;
}
}
UserList
的片段:
fragments: {
viewer: () => Relay.QL`
fragment on ViewerType {
id,
users(first: $limit) {
edges {
node {
id,
userName,
firstName,
lastName,
eMail
}
}
}
}
`,
}
如何设置React / Relay / Router来同时查询users
和loggedInUser
?
更新
我使用react-router@3.0.5和react-router-relay@0.13.7
更新#2
这是我访问&#34; / users&#34;时唯一的查询。并发送到服务器:
query Index {
viewer {
id,
...F0
}
}
fragment F0 on ViewerType {
_users2quBPZ:users(first:100) {
edges {
node {
id,
userName,
firstName,
lastName,
eMail
},
cursor
},
pageInfo {
hasNextPage,
hasPreviousPage
}
},
id
}
响应与查询匹配:
答案 0 :(得分:2)
我完全不确定,但我会这样做:
App的片段:
fragments: {
viewer: () => {
return Relay.QL`
fragment on ViewerType {
loggedInUser {
id
}
${UserList.getFragment("viewer")}
}
`;
};
}
我认为这个示例回购将对您有所帮助:https://github.com/taion/relay-todomvc/blob/master/src/components/TodoApp.js#L60-69