Названный экспорт с HOCs - PullRequest
       11

Названный экспорт с HOCs

0 голосов
/ 14 сентября 2018

проблема

Предположим, у меня есть SFC (я использую TypeScript) и экспортирую его как:

export const AppShell: React.SFC<Props> = (props: Props) => (
  ...
)

Все хорошо. Но теперь, прежде чем экспортировать свой компонент, я хочу обернуть его HOC, например withStyles из MaterialUI . Теперь я хочу сделать что-то вроде:

const AppShell: React.SFC<Props> = (props: Props) => (
 ...
)

И экспортировать его как:

export const AppShell = withStyles(styles)<Props>(AppShell);

Конечно, это приведет к ошибке:

[ts] Cannot redeclare block-scoped variable 'AppShell'.

Решения с компромиссом

Насколько я знаю, теперь у меня будет два варианта:

1) Использовать экспорт по умолчанию:

export default withStyles(styles)<Props>(AppShell);

Поскольку я не являюсь поклонником экспорта по умолчанию из-за многих недостатков Я не согласен с этим решением.

2) Используйте префикс типа 'Raw' для моих компонентов, прежде чем они будут упакованы:

const RawAppShell: React.SFC<Props> = (props: Props) => (
 ...
)

Экспортировать как:

export const AppShell = withStyles(styles)<Props>(RawAppShell);

Мне нравится этот подход гораздо больше, также как и компромисс с добавлением этого префикса.

Другие решения

Как вы справляетесь с этим в своих проектах? Есть ли уже лучшее решение? Для меня очень важно иметь именованный экспорт для моего компонента, чтобы я вообще не мог принять решение с экспортом по умолчанию.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 сентября 2018

Просто сделайте это в одном выражении:

export const AppShell: React.SFC<Props> = withStyles(styles)<Props>((props: Props) => (
  …
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...