Apollo客户端:清除或重置存储时保留/重置默认值

时间:2018-11-14 16:17:45

标签: javascript apollo apollo-link-state

我使用apollo-link-state来本地存储错误,但是清除缓存后出现以下错误。

我已在阿波罗客户端配置选项中将errors的默认值设置为空数组[]

但是,在apolloClient.cache.reset()apolloClient.store.reset()之后,似乎我丢失了所有默认值,从而导致此错误:

Error

有什么办法解决此问题吗?

2 个答案:

答案 0 :(得分:1)

来自docs

  

有时,您可能需要在应用程序中重置存储,例如,当用户注销时。如果在应用程序中的任何位置调用client.resetStore,则需要再次将默认值写入存储。 apollo-link-state为您提供了writeDefaults函数。要将回调注册到Apollo Client,请调用client.onResetStore并传入writeDefaults。

因此您可以执行以下操作:

const cache = new InMemoryCache()
const link = withClientState({ cache, resolvers, defaults })

const client = new ApolloClient({
  cache,
  link,
})

client.onResetStore(stateLink.writeDefaults)

答案 1 :(得分:0)

使用Apollo 2.x,您可以执行以下操作:

cache.writeData({data : defaultData });

client.onResetStore(() => {
  cache.writeData({data : defaultData });
});

假设您在此代码上方设置了用于缓存的默认数据。