0

如果我创建一个具有以下架构的 graphql 服务器:

type Node {
   id: ID!
}
type User implements Node {
   id: ID!
   groups: [group!]!
}

type Group implements Node {
  id: ID!
  name: String!
}

type Query {
   me: User!
   node(id: ID!): Node
}

稍后使用 react-relay 我进行以下查询:

query {
  me {
    groups {
        id
        name
    }
  }
}

它返回以下内容

{
    me: {
        groups: [{
            id: '1',
            name: 'food lovers'
        }]
    }
}

如果稍后在我的应用程序中,我会进行另一个查询,如下所示

query  {
    node(id: "1") {
        ... on Group {
            id
            name
        }
    }
}

react-relay 会向服务器发出请求吗?还是足够聪明地知道我们已经在缓存中拥有了所请求项目的所有数据?

4

1 回答 1

0

根据文档,默认行为network-only是不使用缓存,而是始终从服务器获取新结果。您可以通过指定其中一个将首先使用缓存结果并从网络并行获取新数据来更改此fetchPolicy设置store-and-network

同样重要的是要知道,中继对其存储进行垃圾收集,因此未引用的记录最终将从“缓存”中删除。

中继实验功能的文档表明,将有一个store-only选项和 API 可以在缓存中手动保留数据,以及在等待网络时呈现部分数据的方法。

于 2019-12-12T16:44:52.367 回答