import { OperationVariables, QueryHookOptions, useQuery } from '@apollo/client'; import { DocumentNode } from 'graphql'; import { ReactNode } from 'react'; import { AsyncRenderer } from '../async-renderer'; interface PageQueryContainerProps { query: DocumentNode; options?: QueryHookOptions; children: (data: TData) => ReactNode; } export const PageQueryContainer = ({ query, options, children, }: PageQueryContainerProps) => { const { data, loading, error } = useQuery(query, options); return ( loading={loading} error={error} data={data}> {(data) => children(data)} ); };