Использование шаблона Apollo GraphQL HOC с существующим HOC

У меня есть базовый HOC, который находится вокруг нескольких моих компонентов:

import * as React from 'react';    
export const AuthRoute = () => (WrappedComponent: any) => {
  return class extends React.Component<{}, {}> {
    constructor(props: any) {
      super(props);
    }
    public render() {
      return <WrappedComponent {...this.props} />;
    }
  };
}

Я хочу, чтобы этот HOC имел доступ к другому HOC - клиентскому HOC React Apollo для GraphQL. Я пробовал использовать клиент Apollo на этом HOC, но он выдает ошибку «TypeError: не удается установить свойство 'props' на undefined». Вот моя попытка:

const AuthRoute = () => (WrappedComponent: any) => {
  return class extends React.Component<{}, {}> {
    constructor(props: any) {
      super(props);
    }
    public render() {

      return <WrappedComponent {...this.props} />;
    }
  };
}

const GET_AUTH = gql`
  {
    authStatus {
      authStatus
    }
  }
`;

export default compose(graphql(GET_AUTH))(AuthRoute);

Мне здесь не хватает чего-то простого, потому что я думал, что это сработает? Или есть лучшая практика для библиотеки на основе HOC, такой как Apollo, с существующим HOC?

Спасибо!


person JamesG    schedule 10.08.2018    source источник


Ответы (1)


Похоже, у вас только что опечатка. Измените экспорт по умолчанию на это:

export default compose(graphql(GET_AUTH), AuthRoute);

... и он должен работать

person Brian Adams    schedule 10.08.2018