首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: cache.writeData不是一个函数--> apollo-link-state

TypeError: cache.writeData不是一个函数--> apollo-link-state
EN

Stack Overflow用户
提问于 2018-01-10 14:14:04
回答 3查看 2.6K关注 0票数 2

我正在尝试使用apollo-link-state来管理本地状态。我读到过你应该用withClientState()设置解析器,默认值和缓存。所以我们开始了:

代码语言:javascript
复制
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
});

然后将client传递给apolloProvider:<ApolloProvider client={client}>,但我得到了错误TypeError: cache.writeData is not a function。它指出了这一行:const stateLink = withClientState({

我想查询和console.log默认值。但到目前为止我什么也没做。

从阿波罗的文档、youtube教程和博客文章中可以明显看出,cache.writeData错误不应该出现。那么为什么会在这里呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-11 12:43:27

该问题是由未满足的对等依赖项引起的。我再次安装了我使用的每个依赖项,现在它可以工作了。因此,如果您想在不久前启动的项目中安装和使用apollo-link-state,则需要更新它的对等依赖项。

票数 3
EN

Stack Overflow用户

发布于 2018-01-26 01:46:42

这也让我犯了一次错,为了给出更多信息,apollo-link-state用于将方法路径到apollo缓存,但后来api中包含了writeData。

因此,如果您使用的是apollo-cache-inmemory,请确保大于1.1.5。

这里是相关的PR:https://github.com/apollographql/apollo-link-state/pull/164/files

票数 2
EN

Stack Overflow用户

发布于 2020-08-28 21:13:39

如果要从@apollo/client导入Inmemory cache,则需要执行以下操作

代码语言:javascript
复制
import {
  InMemoryCache
} 

来自apollo-cache-inmemory,甚至在阿波罗版本3上

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48181317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档