我已经完成了我能找到的所有与auth相关的graphql教程,但我仍然无法真正理解它。
如果在我的 Auth 组件,我查询令牌和用户凭据,如下所示:
Auth
const LOGIN_MUTATION = gql` mutation LoginMutation($email: String!, $password: String!) { login(email: $email, password: $password) { token user { name } } } `
如何在另一个组件中访问此数据?每个指南似乎都说我将需要用户数据的每个组件包装在另一个组件中 <Query> 元素,那么每个组件都需要尝试登录吗?
<Query>
有了redux,我可以把它添加到商店中 mapStateToProps 不需要每次都查询服务器就可以得到它。这在阿波罗中是可行的,还是我只是为同一件事写了数百个查询?
mapStateToProps
每个组件都需要尝试登录吗?
不,每个组件都不必重新登录,如果您查看阿波罗文档,我们可以看到它说明:
当查询组件挂载时,Apollo客户端会为我们的查询创建一个Observable。我们的组件通过Apollo客户端缓存订阅查询结果。
首先,我们尝试从Apollo缓存加载查询结果。如果它不在那里,我们将请求发送到服务器。
一旦数据返回,我们将其标准化并存储在Apollo缓存中。由于查询组件订阅结果,因此它会以响应方式更新数据。
因此,如果您在下次提取该项时提取用户凭据并将其存储在缓存中,那么如果该项不在缓存中,则它将从缓存中返回。
https://www.apollographql.com/docs/react/essentials/queries.html