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

Javascript Apollo客户端:在清除或重置存储时保留/重置默认值,javascript,apollo,apollo-link-state,Javascript,Apollo,Apollo Link State,我正在使用阿波罗链接状态来本地存储错误,但是在清除缓存后,我得到了以下错误 我已经在apollo客户端配置选项中将errors的默认值设置为空数组[] 但是,在apolloClient.cache.reset()或apolloClient.store.reset()之后,我似乎丢失了所有默认值,导致此错误: 有没有解决此问题的方法?来自: 有时您可能需要在应用程序中重置存储,例如当用户注销时。如果在应用程序中的任何位置调用client.resetStore,则需要再次将默认值写入存储。apol

我正在使用阿波罗链接状态来本地存储错误,但是在清除缓存后,我得到了以下错误

我已经在apollo客户端配置选项中将
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
有一些问题。通过向客户端类型定义中添加任何
查询
来解决此问题。。