Многоразовый типизированный компонент Reaction-Apollo с запросом - PullRequest
0 голосов
/ 24 августа 2018

Можно создать типизированный <Query> <Mutation> или <Subscription> , расширив соответствующий класс :

class MyQuery extends Query<TData, TVariables> { }

Однако в этом случае мне придетсяпоставлять query каждый раз, когда я использую <MyQuery>:

<MyQuery query={queries.MyQuery}> // etc.

Есть ли хороший способ «запечь» запрос, чтобы можно было повторно использовать <MyQuery> без необходимости указывать query={...}

1 Ответ

0 голосов
/ 25 августа 2018

Полагаю, вы можете использовать небольшой компонент-обертку:

type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
function cannedQuery<TData, TVariables>(query: DocumentNode) {
  return (props: Omit<QueryProps<TData, TVariables>, "query">) =>
    <Query query={query} {...props}/>;
}

const MyQuery = cannedQuery<TData, TVariables>(gql`...`);

Я не знаком с react-apollo, поэтому, если это не сработает, дайте мне знать, что идет не так, и яможет быть в состоянии придумать что-то еще.Мне кажется, что все, кто использует react-apollo с TypeScript, хотели бы этого, поэтому вы можете предложить добавить этого помощника в react-apollo.

...