@relay(pattern:true) 的目的
Purpose of @relay(pattern:true)
在 change log 中为 relay.js
0.5
引入了新表达式 @relay(pattern: true)
。
但是无法从描述中弄清楚,也无法测试它到底做了什么,以及在编写时应该何时使用它fatQueries
。
一些例子会很有帮助。
考虑如下所示的 GraphQL 查询:
viewer {
friends(first: 10) {
totalCount
edges { node { name } }
pageInfo { hasNextPage }
}
}
为 Relay 突变定义 fat query 时,包含字段名称而不指定其任何子字段告诉 Relay 该字段的任何子字段 可以由于该突变而发生变化。
不幸的是,在 friends
字段中省略 find
、first
和 last
等连接参数将导致连接参数验证错误-依赖字段 edges
和 pageInfo
:
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload {
viewer {
friends { edges, pageInfo } # Will throw the validation error below
}
}
`;
}
// Uncaught Error: GraphQL validation/transform error ``You supplied the `pageInfo`
// field on a connection named `friends`, but you did not supply an argument necessary
// to do so. Use either the `find`, `first`, or `last` argument.`` in file
// `/path/to/MyMutation.js`.
您可以使用 @relay(pattern: true)
指令来指示要使用胖查询来 模式匹配 跟踪查询,而不是将其用作完全查询-成熟的查询。
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload @relay(pattern: true) {
viewer {
friends { edges, pageInfo } # Valid!
}
}
`;
}
有关突变的更多信息,请参阅:https://facebook.github.io/relay/docs/guides-mutations.html#content
在 change log 中为 relay.js
0.5
引入了新表达式 @relay(pattern: true)
。
但是无法从描述中弄清楚,也无法测试它到底做了什么,以及在编写时应该何时使用它fatQueries
。
一些例子会很有帮助。
考虑如下所示的 GraphQL 查询:
viewer {
friends(first: 10) {
totalCount
edges { node { name } }
pageInfo { hasNextPage }
}
}
为 Relay 突变定义 fat query 时,包含字段名称而不指定其任何子字段告诉 Relay 该字段的任何子字段 可以由于该突变而发生变化。
不幸的是,在 friends
字段中省略 find
、first
和 last
等连接参数将导致连接参数验证错误-依赖字段 edges
和 pageInfo
:
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload {
viewer {
friends { edges, pageInfo } # Will throw the validation error below
}
}
`;
}
// Uncaught Error: GraphQL validation/transform error ``You supplied the `pageInfo`
// field on a connection named `friends`, but you did not supply an argument necessary
// to do so. Use either the `find`, `first`, or `last` argument.`` in file
// `/path/to/MyMutation.js`.
您可以使用 @relay(pattern: true)
指令来指示要使用胖查询来 模式匹配 跟踪查询,而不是将其用作完全查询-成熟的查询。
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload @relay(pattern: true) {
viewer {
friends { edges, pageInfo } # Valid!
}
}
`;
}
有关突变的更多信息,请参阅:https://facebook.github.io/relay/docs/guides-mutations.html#content