Я экспериментировал с GraphQL / Apollo в Typescript и столкнулся с огромным количеством действительно очевидных проблем с набором текста, которые заставляют меня задуматься, не делаю ли я это просто неправильно.
Фактически, то, что я хотел бы сделать (поскольку это имеет для меня смысл), - это составить данные для моих компонентов, вставив их в несколько вызовов HOC. Вот пример того, что я имею в виду (без импорта)
interface Props {
theme: Theme;
}
class Navigation extends React.Component<Props & ViewerProps & PageProps> {
render() {
const { viewer, page } = this.props;
return <h1>Hello, {viewer.name}; welcome to {page.name}</h1>;
}
}
export default withPage(withViewer(Navigation));
В другом месте:
<Navigation theme = {this.theme} />
Действительно ли это какой-то узор в Аполлоне? Есть ли какие-нибудь ссылки, которые используют это или что-то подобное?
Спасибо





В Apollo 2.1 они обновились, чтобы использовать функции рендеринга.
https://reactjs.org/docs/render-props.html, который поможет более надежно печатать через компоненты.
https://dev-blog.apollodata.com/introduction-react-apollo-2-1-c837cc23d926
Одна вещь, которую я делал с компонентами с HoC, - это преобразование HoC с React.ComponentType, чтобы он мог убедиться, что вы передаете правильные реквизиты компоненту.
const NavigationContainer: React.ComponentType<Props> =
withPage(withViewer(Navigation));
export default NavigationContainer;