0

所以这是包装组件,我在其中传递了一个useOrganizationAutocompleteQuery由 graphql-codegen 生成的 useQuery 钩子。我希望能够传入任何类型的 useQuery 钩子。

<AutocompleteField
  {...props}
  getOptionLabel={(option: OrganizationResult) => option.name.value || ''}
  queryHook={useOrganizationAutocompleteQuery}
  resource="organizations"
/>

我将如何输入queryHook道具以接受任何类型的阿波罗 useQuery 钩子?

queryHook: typeof useOrganizationAutocompleteQuery;

这就是 Apollo 的 useQuery

export declare function useQuery<TData = any, TVariables = OperationVariables>(query: DocumentNode, options?: QueryHookOptions<TData, TVariables>): QueryResult<TData, TVariables>;
4

1 回答 1

1

apolloReactHooksImportFrom您可以使用配置标志配置从何处导入挂钩(请参阅https://graphql-code-generator.com/docs/plugins/typescript-react-apollo):

generates:
  my-file.tsx:
    config:
      apolloReactHooksImportFrom: my-package
    plugins:
      - typescript
      - typescript-operations
      - typescript-react-apollo

useQuery您还可以使用任何类型的自定义挂钩指向相关文件。

如果您希望拥有更大的灵活性并拥有自定义生成的代码,您可以编写自定义代码生成插件(https://graphql-code-generator.com/docs/custom-codegen/write-your-plugin)来生成自定义代码。

此外,如果您认为可以在 codegen 本身中添加/修改某些内容,请告诉我,我们总是欢迎更多的灵活性 :)

于 2020-07-26T07:16:59.377 回答