字段参数
运行时参数
如果您的解析器需要在运行时访问参数数据,您只需在解析器 docblock 的字段定义中定义参数,然后将参数作为解析器函数的第二个参数中的属性读取。
/**
* @RelayResolver User.greet(salutation: String!): String
*/
export function greet(user: UserModel, args: { salutation: string }): string {
return `${args.salutation}, ${user.name}!`;
}
使用此字段需要在您的 GraphQL 查询中将参数传递给该字段
query MyQuery($salutation: String!) {
me {
greet(salutation: $salutation)
}
}
这反过来需要在您获取查询时传递参数。
将参数传递给您的 @rootFragment
如果您正在定义一个 派生解析器,并且其根片段中的某个字段需要参数,您必须使用 @argumentDefinitions 在您的片段定义中定义一个显式片段参数。然后,您的解析器字段将期望将此参数作为字段参数传递。
/**
* @RelayResolver User.fancyGreeting: String
* @rootFragment UserFancyGreetingFragment
*/
export function fancyGreeting(key: UserFancyGreetingFragment$key): string {
const user = readFragment(graphql`
fragment UserFancyGreetingFragment on User @argumentDefinitions(
salutation: {type: "String"},
) {
name
greet(salutation: $salutation)
}
`, key);
return `${user.name} says ${user.greet}`;
}
使用此字段需要在您的 GraphQL 查询中将参数传递给该字段
query MyQuery($salutation: String!) {
me {
fancyGreeting(salutation: $salutation)
}
}