首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用cache.writeData时,apollo-link-state报错

调用cache.writeData时,apollo-link-state报错
EN

Stack Overflow用户
提问于 2018-01-21 03:06:20
回答 1查看 938关注 0票数 1

我刚接触apollo-link-state,并且被困了一段时间。我要解决的问题很简单,只需将模态信息保存到本地状态,但是,当我尝试保存到时,它会抱怨:

代码语言:javascript
复制
ApolloError.js?f55daa5:36 Uncaught (in promise) Error: Network error: Cannot read property 'selections' of null
    at new ApolloError (ApolloError.js?f55daa5:36)
    at Object.error (QueryManager.js?8f5ff47:115)
    at SubscriptionObserver.error (zen-observable.js?8f5ff47:176)
    at <anonymous>

我的源码,如下所示:

代码语言:javascript
复制
{ // resolvers and defaults
  resolvers: {
    Mutation: {
      openModal: (_, args, { cache }) => {
        const {name} = args
        cache.writeData({
          modal: {
            name,
            open: true,
            __typename: 'Modal',
          },
        })
        return null
      },
      closeModal: (_, __, {cache}) => {
        cache.writeData({modal: {open: false}})
      }
    }
  },
  defaults: {
    modal: {
      __typename: 'Modal',
      open: false,
      name: ''
    }
  }
}

graphql(
    gql`
        mutation openModal  ($name: String!) {
            openModal  (name: $name) @client
        }
    `
  )(
  ({mutate}) => {
    return (
      <div>
        <button onClick={() => mutate({ variables: { name: 'test' }})} >Open</button>
      </div>
    )
  }
)

单击该按钮时,会出现错误消息。有什么想法吗?

顺便说一下,我正在next.js中使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 03:51:27

我也有同样的问题。在参考了the todos example中的代码之后,我发现必须像这样包装对象的{ data: { // your actual data } }。因此,在您的情况下,可能是:

代码语言:javascript
复制
cache.writeData({
  data: {
    modal: {
      name,
      open: true,
      __typename: 'Modal',
    },
  },
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48360019

复制
相关文章

相似问题

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