gpt4 book ai didi

javascript - 继电器 : How to merge instead of override queries in nested routes?

转载 作者:可可西里 更新时间:2023-11-01 02:27:01 24 4
gpt4 key购买 nike

我无法在我的应用程序中导航到 /users,因为它不会触发提取我期望的所有查询。

我的应用程序由一个 App 组件和一些包含实际内容的组件组成,例如 DashboardUserList。还有一个 EnsureAuthenticationContainer 但这只是一个组件,当用户通过身份验证时,它只是呈现它的 child 。这是我的路线设置:

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>

问题是,AppUserList 都定义了碎片,似乎只发送了 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 来查询 usersloggedInUser

更新

我使用 react-router@3.0.5 和 react-router-relay@0.13.7

更新#2

这是 Relay 在我访问“/users”时生成并发送到服务器的唯一查询:

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
}

响应与查询匹配:

The response from the server

最佳答案

我完全不确定,但我会这样做:

应用片段:

fragments: {
viewer: () => {
return Relay.QL`
fragment on ViewerType {
loggedInUser {
id
}
${UserList.getFragment("viewer")}
}
`;
};
}

我认为这个示例 repo 会对您有所帮助:https://github.com/taion/relay-todomvc/blob/master/src/components/TodoApp.js#L60-69

关于javascript - 继电器 : How to merge instead of override queries in nested routes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43684386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com