Apollo writeFragment不更新数据

问题描述 投票:3回答:1

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

type PagedThing {
  data: [Thing]
  total: Int
}

在执行以下writeFragment时

  client.writeFragment({
    id,
    fragment: gql`
      fragment my_thing on Thing {
        status
      }
    `,
    data: {
      status
    }
  })

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

PS:为了安全起见,我使用了fragment matching

编辑1:

我收到错误:

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

所以我将代码更改为:

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

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

caching graphql react-apollo
1个回答
10
投票

结果我不仅需要添加__typename作为默认解析所需的ID(Explained here

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

client.writeFragment({
  id: `Thing:${id}`,
  fragment: gql`
    fragment my_thing on Thing {
      status
    }
  `,
  data: {
    __typename: 'Thing',
    status
  }
})
© www.soinside.com 2019 - 2024. All rights reserved.