我使用apollo-link-state
来本地存储错误,但是清除缓存后出现以下错误。
我已在阿波罗客户端配置选项中将errors
的默认值设置为空数组[]
。
但是,在apolloClient.cache.reset()
或apolloClient.store.reset()
之后,似乎我丢失了所有默认值,从而导致此错误:
有什么办法解决此问题吗?
答案 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 });
});
假设您在此代码上方设置了用于缓存的默认数据。