Я использую React, Typescript и Apollo в приложении.У меня есть произвольный компонент React, который я хотел бы визуализировать.Компонент использует функцию compose
для обработки загрузки данных из серии запросов graphql.
parent.tsx
<MyComponent />
myComponent.tsx
class MyComponent extends React.Component<MyComponentProps, MyComponentState> {
// code, render, etc
export default compose(
graphql(queryGetSomeData, { name: "GetSomeData" }...
КогдаЯ не включаю какие-либо реквизиты с компонентом, все хорошо, компилятор Typescript не жалуется, и приложение рендерится.В тот момент, когда я пытаюсь включить опору (любого типа), компилятор жалуется следующим образом:
<MyComponent doSomething={this.doSomeFunction} /> // or foo, or foo={'bar'}
[ts] Property 'doSomething' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
(property) Parent.doSomething: () => aReturnType
Когда я добавляю withApollo
HOC кcompose
функция MyComponent, ошибка исчезает и компилятор работает успешно.
export default compose(
withApollo,
graphql(queryGetSomeData, { name: "GetSomeData" }...
Я прочитал с помощью документов Apollo и в целом понимаю, что с помощью Apollo предоставляется доступ к Apollo.клиент.Тем не менее, ни один из моих других компонентов не имеет этого ограничения, и я пытаюсь понять, а) почему этот компонент отличается и требует с помощью Apollo и б) как с помощью Apollo решает эту конкретную проблему.
Любое руководство будет высоко оценено,Спасибо!