Apollo writeFragment不更新数据

Fab*_*sta 7 caching graphql react-apollo

在react-apollo 2.0.1中,我有一个如下所示的graphql类型:

type PagedThing {
  data: [Thing]
  total: Int
}
Run Code Online (Sandbox Code Playgroud)

在执行以下writeFragment时

  client.writeFragment({
    id,
    fragment: gql`
      fragment my_thing on Thing {
        status
      }
    `,
    data: {
      status
    }
  })
Run Code Online (Sandbox Code Playgroud)

缓存未更新,新数据未显示在UI上.还有什么需要做的吗?

PS:为了安全起见,我使用了片段匹配

编辑1:

我收到错误:

无法匹配片段,因为缺少__typename属性:{"status":"online"}

所以我将代码更改为:

client.writeFragment({
    id,
    fragment: gql`
      fragment my_thing on Thing {
        status
      }
    `,
    data: {
      __typename: 'Thing',
      status
    }
  })
Run Code Online (Sandbox Code Playgroud)

并且不会抛出任何错误,但更新仍然不会发生

Fab*_*sta 12

结果我不仅需要添加__typename作为默认解析所需的ID(在此处解释)

所以我需要做以下工作才能使它工作:

client.writeFragment({
  id: `Thing:${id}`,
  fragment: gql`
    fragment my_thing on Thing {
      status
    }
  `,
  data: {
    __typename: 'Thing',
    status
  }
})
Run Code Online (Sandbox Code Playgroud)

  • 不得不说,有关该方法的文档还有很多不足之处。 (3认同)
  • 关键字“ id”以类型名开头是关键,谢谢! (2认同)