什么时候应该使用 Relay GraphQL 连接,什么时候应该使用普通列表?
When should I use a Relay GraphQL connection and when a plain list?
在 Relay GraphQL 中,连接和列表都是类似数组的,但它们有不同的特性。我应该什么时候使用它们?
Connections
- 比简单的列表更强大、更灵活。
- 支持分页(向前和向后),带游标。
- 细粒度 mutation support (eg.
RANGE_ADD
, RANGE_DELETE
, NODE_DELETE
, as described in the guide).
- 需要
first
或 last
参数以限制结果集的大小。
- 有一个
edges
字段,它提供了一个位置来定位每条边、特定于边的数据。
- 一个较重的概念,需要更多的工作来在模式中定义。
列表
- 简单轻便。
- 不支持分页(始终返回整个列表)。
- 没有用于前置、附加等的特殊突变功能 (although it is a requested feature)。
使用哪个?
- 只要你需要分页,就应该使用连接。
- 如果您需要对突变进行细粒度控制,您可以选择使用连接,即使您不需要分页。
- 如果您想要一个连接中的所有项目,您可以使用
first
一些大的数字。
- 如果您想以最小的努力公开一个简短列表,请使用简单列表。
在 Relay GraphQL 中,连接和列表都是类似数组的,但它们有不同的特性。我应该什么时候使用它们?
Connections
- 比简单的列表更强大、更灵活。
- 支持分页(向前和向后),带游标。
- 细粒度 mutation support (eg.
RANGE_ADD
,RANGE_DELETE
,NODE_DELETE
, as described in the guide). - 需要
first
或last
参数以限制结果集的大小。 - 有一个
edges
字段,它提供了一个位置来定位每条边、特定于边的数据。 - 一个较重的概念,需要更多的工作来在模式中定义。
列表
- 简单轻便。
- 不支持分页(始终返回整个列表)。
- 没有用于前置、附加等的特殊突变功能 (although it is a requested feature)。
使用哪个?
- 只要你需要分页,就应该使用连接。
- 如果您需要对突变进行细粒度控制,您可以选择使用连接,即使您不需要分页。
- 如果您想要一个连接中的所有项目,您可以使用
first
一些大的数字。 - 如果您想以最小的努力公开一个简短列表,请使用简单列表。