我试图用apollo-link-state管理本地状态。我已经读过您应该使用withClientState()
设置解析器,默认值和缓存。我们去吧:
const cache = new InMemoryCache();
const defaultState = {
editGraph: {
__typename: 'EditGraph',
addNodeForm: 1,
addRelForm: 'test',
editGraphForm: false
}
};
const stateLink = withClientState({
defaults: defaultState,
cache
});
const client = new ApolloClient({
link: ApolloLink.from([
stateLink,
new HttpLink(),
]),
cache
});
然后将客户端传递给apolloProvider:<ApolloProvider client={client}>
但是我收到错误TypeError: cache.writeData is not a function
。其中指出了这一行:const stateLink = withClientState({
我想查询和console.log默认值。但到目前为止我还没到任何地方。
从apollo的文档,youtube教程和博客文章中可以清楚地看出,cache.writeData错误不应该出现。那为什么呢?
答案 0 :(得分:2)
问题是由未满足的对等依赖项引起的。我安装了我再次使用的每个依赖项,它现在正在工作。因此,如果您想在之前启动的项目中安装和使用apollo-link-state,则需要更新apollo-link-state其对等依赖项。
答案 1 :(得分:1)
这也让我失望了一段时间,给了一些更多的信息,apollo-link-state用于将方法路由到apollo缓存,但后来的apollo缓存包含了writeData in the apice。
因此,如果您使用的是apollo-cache-inmemory,请确保您拥有&gt; 1.1.5。
以下是相关的PR:https://github.com/apollographql/apollo-link-state/pull/164/files
答案 2 :(得分:0)
如果要从Inmemory cache
导入@apollo/client
,则需要这样做
import {
InMemoryCache
}
从apollo-cache-inmemory
甚至在阿波罗版本3上