以下是该方案:
USER 1
以下是查询:
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);
所以一切都适用于第一个用户,现在第二个用户到达同一台计算机和同一个浏览器。
USER 2
如果我进行浏览器刷新,则会使用良好的用户ID发送查询...
那么为什么第一次尝试时不刷新id变量(看起来像本地存储中的id值)?我该如何解决这个问题?
感谢您的帮助。
答案 0 :(得分:3)
这是因为您的options
字段是静态的,并且在首次加载包含查询的文件时进行评估。 (我假设在某处,可能是步骤3或4,本地存储中的id
已正确更新为第二个用户。)
config.options可以是您现在传递的对象,也可以是查询需要时评估的函数。
所以要每次从id
加载localStorage
而不只是一次,你可以这样做:
options: () => ({
variables: {
id: localStorage.getItem("id")
},
errorPolicy: "all"
})
答案 1 :(得分:0)
然后第一个用户退出,您需要重置Apollo商店并清除本地存储。