我希望我的graphql包装器将经过过滤的道具传递给孩子们,在看完示例之后,我似乎找不到找到这种方法的方法。
以https://www.apollographql.com/docs/react/recipes/static-typing#props为例,我想做这样的事情:
const withCharacter = graphql<InputProps, Response, Variables, ChildProps>(HERO_QUERY, {
options: ({ episode }) => ({
variables: { episode }
}),
props: ({ data: { hero } }) => {
return ({ ...hero }) . // <- TS2322
}
});
但这是假设数据和情节都必须在最终道具中,这似乎很有限。
我得到:
Error:(45, 3) TS2322: Type '({ data: { hero } }: OptionProps<InputProps, Response, Variables>) => { name: string; id: string; appearsIn: string[]; friends: Hero[]; }' is not assignable to type '(props: OptionProps<InputProps, Response, Variables>, lastProps?: void | ChildDataProps<InputProps, Response, Variables>) => ChildDataProps<InputProps, Response, Variables>'.
Type '{ name: string; id: string; appearsIn: string[]; friends: Hero[]; }' is not assignable to type 'ChildDataProps<InputProps, Response, Variables>'.
Property 'episode' is missing in type '{ name: string; id: string; appearsIn: string[]; friends: Hero[]; }' but required in type 'InputProps'.
我想念什么吗?似乎没有办法指定传递的道具的形状。
到目前为止,我发现的唯一解决方法是在data
中返回props
以及我感兴趣的过滤版本。