TypeError:cache.writeData不是函数 - >阿波罗连接状态

时间:2018-01-10 06:14:04

标签: javascript reactjs apollo

我试图用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错误不应该出现。那为什么呢?

3 个答案:

答案 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上