Javascript Apollo客户端:在清除或重置存储时保留/重置默认值
我正在使用阿波罗链接状态来本地存储错误,但是在清除缓存后,我得到了以下错误 我已经在apollo客户端配置选项中将Javascript Apollo客户端:在清除或重置存储时保留/重置默认值,javascript,apollo,apollo-link-state,Javascript,Apollo,Apollo Link State,我正在使用阿波罗链接状态来本地存储错误,但是在清除缓存后,我得到了以下错误 我已经在apollo客户端配置选项中将errors的默认值设置为空数组[] 但是,在apolloClient.cache.reset()或apolloClient.store.reset()之后,我似乎丢失了所有默认值,导致此错误: 有没有解决此问题的方法?来自: 有时您可能需要在应用程序中重置存储,例如当用户注销时。如果在应用程序中的任何位置调用client.resetStore,则需要再次将默认值写入存储。apol
errors
的默认值设置为空数组[]
但是,在apolloClient.cache.reset()
或apolloClient.store.reset()
之后,我似乎丢失了所有默认值,导致此错误:
有没有解决此问题的方法?来自:
有时您可能需要在应用程序中重置存储,例如当用户注销时。如果在应用程序中的任何位置调用client.resetStore,则需要再次将默认值写入存储。apollo link state为您公开writeDefaults函数。要向Apollo客户端注册回调,请调用Client.onResetStore并传入writeDefaults
因此,您可以执行以下操作:
const cache = new InMemoryCache()
const link = withClientState({ cache, resolvers, defaults })
const client = new ApolloClient({
cache,
link,
})
client.onResetStore(stateLink.writeDefaults)
使用Apollo 2.x,您只需执行以下操作:
cache.writeData({data : defaultData });
client.onResetStore(() => {
cache.writeData({data : defaultData });
});
假设在此代码上方设置了缓存的默认数据。谢谢!起初它不起作用,似乎
writeDefaults
有一些问题。通过向客户端类型定义中添加任何查询来解决此问题。。