【问题标题】:Clearing cache on logout with Apollo Client使用 Apollo 客户端在注销时清除缓存
【发布时间】:2019-06-10 21:31:50
【问题描述】:

我正在尝试清除缓存,以便从新用户那里获取数据,而不是从注销的用户那里获取数据..

在文档中阿波罗推荐clearStore(),但它似乎不起作用..

我试过这样:

handleLogout = () => {
  const { client } = this.props;
  localStorage.clear();
  client.clearStore().then(() => {
    history.push('/login')
  })
}

clearStore() 返回 Promise 所以我这样做了,我也尝试调用该函数但同样的事情

【问题讨论】:

  • 可能是报错了?如果在 Promise 链的末尾添加 .catch(console.log) 会发生什么?
  • 没有错误,它重定向但缓存没有被清除..
  • 你检查localstorage实际上是空的吗?

标签: javascript reactjs graphql apollo-client


【解决方案1】:

您可以调用缓存存储并使用以下方法重置:

handleLogout = () => {
        const { client } = this.props;

        client.cache.reset().then(() => {
            history.push('/login')
        })

【讨论】:

  • 这对@merko有什么帮助吗? stackoverflow.com/questions/48887480/…
  • @merko 如果你还没有找到答案,我让它工作的方法是使用client.resetStore(); 这是客户端对象的一部分。
  • 只对我使用 client.cache.reset() 有效。谢谢@jake
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 2018-07-30
  • 2017-03-18
  • 2020-08-07
  • 2017-02-16
相关资源
最近更新 更多