Реагировать HigherOrderComponents в сочетании с типом потока - PullRequest
0 голосов
/ 28 мая 2018

У меня возникла небольшая проблема с пониманием Reacts компонентов высшего порядка в сочетании с flowtype и объявлением Props.

У меня есть 2 вида HOC:

Компонент внутри модального поля:

inModal() => React.Component<{modal: Modal}>

В этом HOC просто создайте новый модал (некоторую безреактивную логику, я уже реализовал) и передайте модальный объект как свойство данному компоненту (чтобы я мог получить доступ к близким обработчикам и т. Д.).внутри моего компонента).

Компонент, защищенный аутентификацией:

needsAuthentication() => React.Component<{auth: Authentication}>

Таким образом, я могу предоставить некоторые важные функции, такие как отключение учетной записи и т. д., и повторно использовать аутентификациюобрабатывать несколько компонентов.

Теперь оба они работают.И мне удалось собрать эти 2 вместе, написав:

inModal(needsAuthentication(DisableAccount))

Моя проблема в том, что inModal нуждается в компоненте, способном обрабатывать свойство, называемое "модальным", и нуждается в аутентификации, чтобы компонент был способен обрабатывать свойство«авторизация».До сих пор это было хорошо, потому что я всегда использовал эти 2 HOC в комбинации.Но сейчас я создаю компост, который не работает внутри модального интерфейса, но нуждается в аутентификации.

Здесь моя проблема с пониманием HOC и flowtype становится реальной проблемой.

Я создалновый компонент, которому необходимо передать свойство, но я не могу определить свой HOC для проверки подлинности needsAuthentication для возврата компонента, принимающего это конкретное свойство, так как он нарушит все остальное.Я мог бы сделать свой новый компонент способным обрабатывать модальное свойство и взломать мой путь через эти джунгли, но я бы скорее попытался на самом деле полностью понять суть вопроса.

Я посмотрел на это , номой уровень разочарования / растерянности уже очень высок, поэтому я не могу все это понять.

Это должно продемонстрировать мою проблему

Я был бы очень рад, если бы кто-то могпомогите разобраться.

1 Ответ

0 голосов
/ 28 мая 2018

Как видно здесь , его можно сделать с помощью магического «любого» типа.Но это похоже на использование «кувалды».Так что я не приму это сейчас.

...