Graphql 如何刷新apollo中的变量
以下是场景: 用户1Graphql 如何刷新apollo中的变量,graphql,apollo,react-apollo,apollo-client,Graphql,Apollo,React Apollo,Apollo Client,以下是场景: 用户1 1) 转到登录页面 2) 写入电子邮件和密码,并通过电子邮件发送到服务器 3) 身份验证确定->服务器返回令牌和用户信息(id、名字、姓氏) 4) 令牌和每个用户信息存储在本地存储器中的单独密钥中 5) 用户将被重定向到主页 6) 用户进入配置文件页面 7) 将向服务器发送一个查询,以检索有关该用户的所有信息(由于本地存储中存储了用户id) 以下是查询: const PROFILE_QUERY = gql` query profileQuery($id: ID!)
- 1) 转到登录页面
- 2) 写入电子邮件和密码,并通过电子邮件发送到服务器
- 3) 身份验证确定->服务器返回令牌和用户信息(id、名字、姓氏)
- 4) 令牌和每个用户信息存储在本地存储器中的单独密钥中
- 5) 用户将被重定向到主页
- 6) 用户进入配置文件页面
- 7) 将向服务器发送一个查询,以检索有关该用户的所有信息(由于本地存储中存储了用户id)
const PROFILE_QUERY = gql`
query profileQuery($id: ID!) {
getUser(id: $id) {
firstName
lastName
email
}
}
`;
export default graphql(PROFILE_QUERY, {
options: {
variables: {
id: localStorage.getItem("id")
},
errorPolicy: "all"
}
})(ProfilePage);
- 8) 服务器返回信息,用户可以在配置文件页面中看到这些信息
- 9) 用户决定注销
- 从1到7的步骤与前一个用户相同
- 发送到服务器以检索用户信息的查询不起作用,因为查询发送的id是前一个用户的id(并且不允许用户检索有关其他用户的信息)
感谢您的帮助。然后第一个用户注销,您需要重置Apollo store并清除本地存储。然后第一个用户注销,您需要重置Apollo store并清除本地存储。发生这种情况的原因是,您的
选项
字段是静态的,并且在首次加载包含查询的文件时进行计算。(我假设在某个地方,可能是步骤3或步骤4,本地存储中的id
已为第二个用户正确更新。)
可以是像您现在传递的对象一样的对象,也可以是在查询需要时计算的函数
因此,要每次从localStorage
加载id
,而不是只加载一次,您可以执行以下操作:
options: () => ({
variables: {
id: localStorage.getItem("id")
},
errorPolicy: "all"
})
这是因为
options
字段是静态的,并且在第一次加载包含查询的文件时进行计算。(我假设在某个地方,可能是步骤3或步骤4,本地存储中的id
已为第二个用户正确更新。)
可以是像您现在传递的对象一样的对象,也可以是在查询需要时计算的函数
因此,要每次从localStorage
加载id
,而不是只加载一次,您可以执行以下操作:
options: () => ({
variables: {
id: localStorage.getItem("id")
},
errorPolicy: "all"
})
谢谢你的回答没有,我没有提到,但是我已经用“this.props.client.resetStore”重置了Apollo商店,并且我从本地存储中删除了项目谢谢你的回答没有,我没有提到,但是我已经用“this.props.client.resetStore”重置了Apollo商店我从本地存储中删除了这些项目你的答案很完美我不知道!非常感谢Talz,我的查询现在运行得很好!你的答案很完美我不知道!非常感谢Talz,我的查询现在运行得很好!