从其他查询访问数据?
Access data from other query?
我已经完成了我能找到的所有与身份验证相关的 GraphQL 教程,但我仍然无法真正理解它。
如果在我的 Auth
组件中,我会像这样查询令牌和用户凭据:
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
token
user {
name
}
}
}
`
如何在另一个组件中访问此数据?每个指南似乎都说我将每个需要用户数据的组件包装在另一个 <Query>
元素中,那么每个组件都需要尝试登录吗?
使用 Redux,我可以将它添加到商店中,只需使用 mapStateToProps
即可获取它,而无需在每次需要用户名时查询服务器。这在 Apollo 中可行吗,还是我只是为同一件事编写数百个查询?
would every component need to attempt to log in?
没有每个组件都不必重新登录,如果您查看 apollo 文档,我们可以看到它指出:
当 Query 组件挂载时,Apollo Client 会为我们的查询创建一个可观察对象。我们的组件通过 Apollo 客户端缓存订阅查询结果。
首先,我们尝试从Apollo缓存中加载查询结果。如果不存在,我们将请求发送到服务器。
数据返回后,我们将其规范化并存储在 Apollo 缓存中。由于 Query 组件订阅了结果,它会被动地更新数据。
因此,如果您获取用户信用并将它们存储在缓存中,那么下次您去获取该项目时,它将来自缓存,如果它不在缓存中,它将重新获取。
https://www.apollographql.com/docs/react/essentials/queries.html
我已经完成了我能找到的所有与身份验证相关的 GraphQL 教程,但我仍然无法真正理解它。
如果在我的 Auth
组件中,我会像这样查询令牌和用户凭据:
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
token
user {
name
}
}
}
`
如何在另一个组件中访问此数据?每个指南似乎都说我将每个需要用户数据的组件包装在另一个 <Query>
元素中,那么每个组件都需要尝试登录吗?
使用 Redux,我可以将它添加到商店中,只需使用 mapStateToProps
即可获取它,而无需在每次需要用户名时查询服务器。这在 Apollo 中可行吗,还是我只是为同一件事编写数百个查询?
would every component need to attempt to log in?
没有每个组件都不必重新登录,如果您查看 apollo 文档,我们可以看到它指出:
当 Query 组件挂载时,Apollo Client 会为我们的查询创建一个可观察对象。我们的组件通过 Apollo 客户端缓存订阅查询结果。
首先,我们尝试从Apollo缓存中加载查询结果。如果不存在,我们将请求发送到服务器。
数据返回后,我们将其规范化并存储在 Apollo 缓存中。由于 Query 组件订阅了结果,它会被动地更新数据。
因此,如果您获取用户信用并将它们存储在缓存中,那么下次您去获取该项目时,它将来自缓存,如果它不在缓存中,它将重新获取。
https://www.apollographql.com/docs/react/essentials/queries.html