进行节点查询时,将在发出网络请求之前进行响应中继检查该节点是否在商店中?

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

如果创建具有以下架构的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是否会向服务器发出请求?还是足够聪明地知道我们已经在缓存中保存了所请求项目的所有数据?

relayjs relay relaymodern react-relay
1个回答
0
投票

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

同样重要的是要知道,中继在其存储上执行garbage collection,因此最终未从“缓存”中删除未引用的记录。

中继的实验性功能的文档指出,在等待网络时,缓存中将有一个store-only选项和store-only的API,以及manually retain data的方式。

© www.soinside.com 2019 - 2024. All rights reserved.