首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否检查现有的ApolloClient实例以清除缓存?

是否检查现有的ApolloClient实例以清除缓存?
EN

Stack Overflow用户
提问于 2020-04-21 03:10:29
回答 1查看 250关注 0票数 1

我们在一个主" app“中有一个React/GraphQL app。当用户注销时,我们希望清除GQL缓存。但是,注销功能存在于包装器应用程序中,而不是React应用程序中。

当我们重新登录时,缓存没有被清除,这是需要解决的。关于如何解决这个问题,有几个问题:

1)当React应用程序尝试创建新实例时,我们可以检查缓存吗?有没有可以添加的“版本”标志?

代码语言:javascript
复制
const client = new ApolloClient({
  link: authLink.concat(restLink),
  cache: () => {
    if (client.cache) {
      client.cache.reset()
    }
    return new InMemoryCache();
  }
});

2)或者我们可以通过任何其他窗口或全局对象找到现有的客户端应用程序吗? 3) react应用程序是否应该将客户端设置为本地状态的一部分,然后将客户端与useRef进行比较?如果它们不匹配,那么重置?

欢迎您的建议...

EN

回答 1

Stack Overflow用户

发布于 2020-04-21 07:01:42

清除缓存的官方方法是客户端实例中的calling resetStore。通过使用例如useApolloClient hook,您可以在Apollo上下文中的任何组件中获取客户端实例

代码语言:javascript
复制
function MyLogoutButton() {
  const client = useApolloClient();
  const onLogout = () => {
    backend.logout();
    client.resetStore();
  };
  return <button onClick={onLogout}>Logout</button>;
}

也许这就是你想做的事情。您似乎正在尝试创建客户端的新实例,但这并不是必需的。resetStore方法就是为这个用例构建的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61330184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档